繁体   English   中英

如果另一列在SQL Server中相同,则获取具有最小列值的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM