[英]SQL - return the smallest value in one column that matches the value of another column
[英]Getting the row with the smallest column value if another column is the same in SQL Server
Id Number Value
------------------
1 6 1
2 6 2
3 9 2
我有一个这样的表,基本上,如果它们的Number
列相同,则需要返回具有最小Value
的行,我需要的示例结果如下:
Id Number Value
-----------------
1 6 1
3 9 2
如何在T-SQL中实现这一目标?
您可以使用rank
窗口功能:
SELECT id, number, value
FROM (SELECT id, number, value, RANK() OVER(PARTITION BY number ORDER BY value) AS rk
FROM mytable)
WHERE rk = 1
编辑:
如注释中所述,如果有多个具有最低value
,则使用rank
将返回两者。 如果您只想返回其中之一,则应改用row_number
:
SELECT id, number, value
FROM (SELECT id, number, value,
ROW_NUMBER() OVER(PARTITION BY number ORDER BY value) AS rn
FROM mytable)
WHERE rn = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.