2015-12-03 71 views
-1

我知道我们已经有了类似主题上的几篇文章。但我认为这种情况有点不同,实际上我无法通过其他帖子中给出的答案得到我想要的结果。sql select基于来自顶部的第一个最小值

我们有一个表,如下图所示:在“金额”栏

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 

谢谢!

+1

的可能的复制[SQL查询来选择不同的行与最小值(http://stackoverflow.com/questions/15291506/sql-query-to-select-distinct-row -with-minimum-value) – zero323

+0

你是否需要在'select query'中使用column'id'?如果是,那么数据类型是什么? –

+0

是的,我需要列ID - 类型是“INT”。实际上还有更多的列可供选择。 – sqluser

回答

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