Id Number Value
------------------
1 6 1
2 6 2
3 9 2
我有一个这样的表,基本上,Value
如果它们的Number
列相同,我需要返回最小的行,我需要的示例结果如下:
Id Number Value
-----------------
1 6 1
3 9 2
如何在T-SQL中实现这一目标?
您可以使用rank
window函数:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句