我需要为包含5列ID1
,ID2
,ID3
,A
和B
的表编写查询。这里,
<{1}},ID1
和ID2
构成主键。
对于每个ID3
,找到最大ID1
。如果两个或多个A
具有最大值,请选择唯一一个具有最大A
的记录。最后使用相应的B
和ID2
值显示结果。
例如,对于下表
ID3
查询应显示如下结果。
ID1 ID2 ID3 A B
1 2 3 10 5
1 3 4 30 4
1 3 5 30 3
2 2 3 5 1
2 3 4 9 2
2 3 5 11 3
答案 0 :(得分:3)
这要点是
ROW_NUMBER
ID1
ORDER
从A
和B
上的高到低。CTE
中,以便在rn
SQL声明
;WITH q AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY A DESC, B DESC) AS rn
FROM YourTable
)
SELECT *
FROM q
WHERE rn = 1