查询结果中的一系列记录

时间:2012-09-04 13:46:35

标签: tsql

我想知道是否有一些简单的方法,函数或其他方法从查询中返回具有以下结果的数据。

我有一个SQL Express DB 2008 R2,一个包含给定列中数字数据的表,比如col T.。

我在代码中得到一个值X,并希望返回最多三条记录。 col T等于我的值X的记录,以及之前和之后的记录,没有别的。排序是在col T上完成的。之前的记录可能是文件的开头,因此不存在,同样,如果X等于最后一条记录,那么后面的记录将不存在,文件/表格的结尾。

表中可能不存在X的值。

我认为这类似于按数字顺序获得一系列结果。

非常感谢任何帮助或指导解决这个问题。

再次感谢,

2 个答案:

答案 0 :(得分:2)

它可能不是最佳解决方案,但是:

SELECT T
FROM theTable
WHERE T = X
UNION ALL
SELECT *
FROM 
(
    SELECT TOP 1 T
    FROM theTable
    WHERE T > X
    ORDER BY T
) blah
UNION ALL
SELECT *
FROM
(
    SELECT TOP 1 T
    FROM theTable
    WHERE T < X
    ORDER BY T DESC
) blah2

答案 1 :(得分:0)

DECLARE @x int = 100

;WITH t as 
(
    select ROW_NUMBER() OVER (ORDER BY T ASC) AS row_nm,*
    from YourTable
)
, t1 as
(
    select *
    from t
    WHERE T = @x
)
select *
from t 
CROSS APPLY t1
WHERE t.row_nm BETWEEN t1.row_nm -1 and t1.row_nm + 1