我有下表:
A B C D E F
James Michael 123 Hello World 1
James Michael 123 Hello World 5
James Michael 123 Hello World 7
Harold Reynolds 345 There Poop 1
John Lowland 555 Woh Pop 1
Howard Yow 255 Man That 1
我希望能够根据 F 的最大值选择所有行。
结果应该是:
James Michael 123 Hello World
Harold Reynolds 345 There Poop
John Lowland 555 Woh Pop
Howard Yow 255 Man That
最佳答案
您可以使用 ROW_NUMBER()
函数执行此操作:
;with cte AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY "C" ORDER BY "F" DESC) AS RN
FROM Table1)
SELECT "A", "B", "C", "D", "E"
FROM cte
WHERE RN = 1
演示:SQL Fiddle
ROW_NUMBER()
函数为 PARTITION BY
子句(可选)中使用的每组字段从 1 开始为每一行生成一个数字,并确定顺序通过 ORDER BY
子句(必需)。
注意:我假设您的 C
字段足以识别一行,但如果情况并非如此,您可能需要将字段添加到 PARTITION BY
子句.
关于sql - 如何根据一列的最大值在表中选择不同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26187965/