1

次の結果でクエリからデータを返す簡単な方法、関数、またはその他の方法があるかどうか疑問に思っています。

私はSQL Express DB 2008 R2を持っています。これは、特定の列に数値データを含むテーブルです。たとえば、col T.

コードで値 X が与えられ、最大 3 つのレコードを返したいと考えています。列 T が私の値 X と等しいレコード、およびその前後のレコードだけです。並べ替えは列 T で行われます。前のレコードはファイルの先頭であり、したがって存在しない可能性があります。同様に、X が最後のレコードに等しい場合、後のレコードは存在せず、ファイル/テーブルの終わりになります。

X の値がテーブルに存在しない可能性があります。

これは、一連の結果を数値順に取得するのと似ていると思います。

これを解決するための助けや方向性は大歓迎です。

再度、感謝します、

4

2 に答える 2

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
于 2012-09-04T13:51:18.287 に答える
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
于 2012-09-04T16:12:46.990 に答える