2

我正在尝试选择一行,以及它之前和之后的 5 行,并在单个选择语句中返回它们。我什至从哪里开始这样做?

提前致谢!

4

3 回答 3

2

您可以使用ctewithROW_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
于 2012-05-15T13:28:53.430 回答
1

您可以使用ROW_NUMBER快速解决问题。

使其成为子查询的结果,然后从该查询中选择所需行号的信息。

于 2012-05-15T13:27:57.513 回答
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
于 2012-05-15T13:25:43.100 回答