我正在尝试选择一行,以及它之前和之后的 5 行,并在单个选择语句中返回它们。我什至从哪里开始这样做?
提前致谢!
您可以使用cte
withROW_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
您可以使用ROW_NUMBER快速解决问题。
使其成为子查询的结果,然后从该查询中选择所需行号的信息。
您可以使用UNION
查询,例如(伪代码):
SELECT TOP 6 * --include row and 5 rows before
FROM table1
WHERE column1 >= @value
UNION
SELECT TOP 5 *
FROM table1
WHERE column1 < @value