Meh*_*ert 2 sql t-sql sql-server
我有这样的数据:
name_text ----------c_num---d_type-----unique_id----------------------v_text--r_ticket_id
29311875_FAD_V100.doc 3560709 Contract 21DABDDF49BA41289F1905D1D6B79ABF 2,01 28600206
29311875_FAD_V100.doc 3560709 Contract 21DABDDF49BA41289F1905D1D6B79ABF 2,01 28600240
Copy.docx 3560715 Guide 9D06F8EFF4EC4A2D862F5A0DB3BA357B 2 28600219
Run Code Online (Sandbox Code Playgroud)
我想选择只有一个排它具有更大的价值r_ticket_id列,如果name_text,c_num,d_type,unique_id,v_text列中的值相等.
在这种情况下,使用select语句只需要获取此列.
name_text ----------c_num---d_type-----unique_id----------------------v_text--r_ticket_id
29311875_FAD_V100.doc 3560709 Contract 21DABDDF49BA41289F1905D1D6B79ABF 2,01 28600240
Copy.docx 3560715 Guide 9D06F8EFF4EC4A2D862F5A0DB3BA357B 2 28600219
Run Code Online (Sandbox Code Playgroud)
完成这项工作的确切SQL查询是什么?
当记录可能具有相同的唯一ID但在每列上具有不同的值时,这可能会有所帮助.利用ROW_NUMBER和窗口功能.我猜他们已经出现在sql-server 2005上了.
SELECT name_text,c_num,d_type,unique_id,v_text,r_ticket_id
FROM
(
SELECT name_text, c_num, d_type, unique_id, v_text, r_ticket_id,
ROW_NUMBER() OVER (PARTITION BY unique_id
ORDER BY r_ticket_id DESC) rn
FROM tableName
) x
WHERE x.rn = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4033 次 |
| 最近记录: |