查询范围的结果记录(query for a range of records in result)

2019-10-17 05:07发布

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

我有一个SQL Express的DB 2008 R2中,包含给定列数值数据的表格,说山坳T.

我给出的代码值X,想返回最多三个记录。 其中山坳T等于我的X值的记录,和前后的记录,而不是其他。 排序是在山坳T.所做的记录之前,可能开始的文件,因此不存在的,同样,如果X等于最后一个记录之后再把记录将是不存在的,文件/表的结束。

X的值可能不存在于表中。

这个我想是类似于获得一定范围内的数字顺序的结果。

在解决任何帮助或方向将不胜感激。

再次感谢,

Answer 1:

它可能不是最优化的解决方案,但是:

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


Answer 2:

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


文章来源: query for a range of records in result
标签: tsql