如何为每个 ID 选择所有第 n 行? 我的 table 看起来有点像这样:
ID fName data
1 Hari 20
1 Hari 30
2 John 89
2 John 38
2 John 55
在这种情况下,您如何为每个 ID 选择所有第二行?
结果是这样的:
ID fName data
1 Hari 30
2 John 38
最佳答案
这对 SQL SERVER 2012 有帮助:
SELECT ID, FNAME, DATA FROM
(
SELECT TEST_DATA.*,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ORDER_BY_CONDITION) AS RANK
FROM TEST_DATA
) T
WHERE T.RANK=2
根据条件更改您的订单(相应地 ORDER_BY_CONDITION
此处为 SQL SERVER 2012 的 fiddle :http://sqlfiddle.com/#!6/f59a1/3
编辑:对于多个表,您可以像在 fiddle 中一样尝试使用 CTE:http://sqlfiddle.com/#!6/8a5b1d/10
关于sql-server - 如何为每个 ID 选择第 n 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034306/