我知道我们已经有类似主题的几篇帖子了。但我认为这个案例有点不同,实际上我无法通过其他帖子给出的答案得到我想要的结果。
我们有一张表格如下:
id code amount
------------------
1 A1 80
2 A1 75
3 A1 70
4 A1 70
5 A1 70
1 A2 92
2 A2 85
3 A2 79
4 A2 50
5 A2 50
如何根据“金额”列中的第一个最低值(从顶部)选择“A1”和“A2”行?在这种情况下,我想要如下结果:
id code amount
------------------
3 A1 70
4 A2 50
谢谢!
答案 0 :(得分:1)
使用ROW_NUMBER
:
SELECT
id, code, amount
FROM (
SELECT *,
Rn = ROW_NUMBER() OVER(PARTITION BY code ORDER BY amount, id)
FROM tbl
) AS t
WHERE Rn = 1
答案 1 :(得分:0)
您不需要按ID排序。所以正确的方法是:
SELECT
id, code, amount
FROM (
SELECT *,
Rn = ROW_NUMBER() OVER(PARTITION BY code ORDER BY amount)
FROM tbl
) AS t
WHERE Rn = 1