sql select基于top的第一个最小值

时间:2015-12-03 06:33:26

标签: sql-server

我知道我们已经有类似主题的几篇帖子了。但我认为这个案例有点不同,实际上我无法通过其他帖子给出的答案得到我想要的结果。

我们有一张表格如下:

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

谢谢!

2 个答案:

答案 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