1

このようなテーブルがあります

Id       Name        ReportingId
==
1        Stala       Null
2        Coma        1
3        Rita        1
4        Rosy        2
5        sss         4

すべてのレポート ID を 1 列で検索する再帰クエリが必要です。

たとえば、id 5 の場合、出力は常に null になる必要があります

4
2
1
null
4

2 に答える 2

3

再帰的な共通テーブル式 (CTE) を使用した例を次に示します。

; with  cte as
        (
        select  ReportingID
        from    YourTable
        where   id = 5
        union all
        select  yt.ReportingID
        from    YourTable yt
        join    cte
        on      cte.ReportingID = yt.id
        )
select  *
from    cte

SQL Fiddle の例。

于 2012-04-18T11:05:16.913 に答える
2

このようなもの:

テストデータ

DECLARE @T TABLE(Id int,Name VARCHAR(5),ReportingId INT)

INSERT INTO @T
VALUES
    (1,'Stala',Null),
    (2,'Coma',1),
    (3,'Rita',1),
    (4,'Rosy',2),
    (5,'sss',4)

クエリ

;WITH CTE
AS
(
    SELECT
        NULL AS Id,
        t.ReportingId
    FROM
        @T AS t
    WHERE
        t.Id=5
    UNION ALL
    SELECT
        t.Id,
        t.ReportingId
    FROM
        @T AS t
        JOIN CTE
            ON t.Id=CTE.ReportingId
)
SELECT
    CTE.Id
FROM
    CTE

結果

NULL
4
2
1
于 2012-04-18T11:06:28.917 に答える