我想知道是否有一些简单的方法,函数或其他方法从查询中返回具有以下结果的数据。
我有一个SQL Express DB 2008 R2,一个包含给定列中数字数据的表,比如col T.。
我在代码中得到一个值X,并希望返回最多三条记录。 col T等于我的值X的记录,以及之前和之后的记录,没有别的。排序是在col T上完成的。之前的记录可能是文件的开头,因此不存在,同样,如果X等于最后一条记录,那么后面的记录将不存在,文件/表格的结尾。
表中可能不存在X的值。
我认为这类似于按数字顺序获得一系列结果。
非常感谢任何帮助或指导解决这个问题。
再次感谢,
答案 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