如何选择给定行周围的n行

时间:2012-05-15 13:21:17

标签: tsql select

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

提前致谢!

3 个答案:

答案 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快速解决问题。

从子查询中获取结果,然后从该查询中选择所需行号的信息。