我正在尝试选择一行,以及它之前和之后的5行,并在单个select语句中返回它们。我甚至在哪里开始这样做?
提前致谢!
答案 0 :(得分:2)
您可以cte
使用ROW_NUMBER
功能:
WITH cte AS(
SELECT t.*
, ROW_NUMBER()OVER(ORDER BY OrderColumn)AS RowNum
FROM Table t
)
SELECT cte.* FROM cte
WHERE RowNum >= @rowToSelect - 5 AND RowNum <= @rowToSelect + 5
答案 1 :(得分:1)
您可以使用UNION
查询,例如(伪代码):
SELECT TOP 6 * --include row and 5 rows before
FROM table1
WHERE column1 >= @value
UNION
SELECT TOP 5 *
FROM table1
WHERE column1 < @value
答案 2 :(得分:1)
您可以使用ROW_NUMBER快速解决问题。
从子查询中获取结果,然后从该查询中选择所需行号的信息。