这让我很难过。这是一个非常简化的版本,但是假设我在SQL Server中有一个用户联盟表,例如:
UserId Total
1 10
2 5
3 20
4 3
5 40
6 15
7 22
8 1
9 18
10 33
现在我可以轻松地按顺序排列这个:
Position UserId Total
1 5 40
2 10 33
3 7 22
4 3 20
5 9 18
6 6 15
7 1 10
8 2 5
9 4 3
10 8 1
但我还希望在表格中显示特定的用户位置以及上面和下面的两个位置,就像第七位用户1一样:
Position UserId Total
5 9 18
6 6 15
7 1 10
8 2 5
9 4 3
我希望这是有道理的,任何帮助/见解都会受到高度赞赏。
答案 0 :(得分:2)
你可以尝试:
SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY Total DESC) AS Position,
UserId,
Total
FROM your_table) p
WHERE p.Position BETWEEN desiredId-2 AND desiredId+2