如何为每个ID选择所有第n行?我的表看起来有点像这样:
ID fName data
1 Hari 20
1 Hari 30
2 John 89
2 John 38
2 John 55
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何为每个ID选择所有第二行?
结果如下所示:
ID fName data
1 Hari 30
2 John 38
Run Code Online (Sandbox Code Playgroud)
这将有助于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
Run Code Online (Sandbox Code Playgroud)
按条件更改订单(相应地按ORDER_BY_CONDITION
这里是SQL SERVER 2012的小提琴:http://sqlfiddle.com/#!6/f59a1/3
编辑: 对于多个表,您可以尝试CTE,如小提琴:http://sqlfiddle.com/#!6/ 8a5b1d/10