sql >> データベース >  >> RDS >> Sqlserver

SQL Server のすべての子レコードを含むレコードを取得します

    再帰的な共通テーブル式を使用してから、各レコードのベース パスのみの結果をフィルター処理する必要があります (つまり、ID 1131 の場合は ABC/RST/UVW を取得します)。 ABC/RSTだけではありません

    WITH CTE AS
    (   SELECT  ID, 
                Name, 
                ParentID, 
                NextParentID = ParentID, 
                Path = CAST(Name AS VARCHAR(MAX)),
                Recursion = 1
        FROM    T
        UNION ALL
        SELECT  CTE.ID, 
                CTE.Name, 
                CTE.ParentID, 
                T.ParentID, 
                CAST(T.Name + '/' + CTE.Path AS VARCHAR(MAX)),
                Recursion + 1
        FROM    CTE
                INNER JOIN T
                    ON CTE.NextParentID = T.ID
    ), CTE2 AS
    (   SELECT  CTE.ID,
                CTE.Name,
                CTE.ParentID,
                CTE.Path,
                RowNumber = ROW_NUMBER() OVER(PARTITION BY CTE.ID ORDER BY Recursion DESC)
        FROM    CTE
    )
    SELECT  ID, Name, ParentID, Path
    FROM    CTE2
    WHERE   RowNumber = 1;
    

    SQL Fiddle の例



    1. Digital Ocean Postgresマネージドデータベースに接続するために、SSL証明書(ca-cert)をnode.js環境変数に追加するにはどうすればよいですか?

    2. SQL-1つのクエリで複数のレコードを更新します

    3. #1060-列名'id'が重複しています

    4. postgres SQL関数を実行するためのcronジョブを作成するにはどうすればよいですか?