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

SQLServer2005の階層クエリ

    これにより、一般的な階層テーブルが作成され、CTEを使用して階層構造が選択され、各アイテムのパスが作成されます。

    CREATE TABLE tblHierarchy (ID int, ParentID int NULL, Name varchar(128));
    
    INSERT INTO tblHierarchy VALUES (1, NULL, '1');
    INSERT INTO tblHierarchy VALUES (2, NULL, '2');
    INSERT INTO tblHierarchy VALUES (3, NULL, '3');
    INSERT INTO tblHierarchy VALUES (4, 1, '1.1');
    INSERT INTO tblHierarchy VALUES (5, 1, '1.2');
    INSERT INTO tblHierarchy VALUES (6, 4, '1.1.1');
    
    WITH Parent AS
    (
        SELECT
            ID,
            ParentID,
            Name AS Path
        FROM
            tblHierarchy
        WHERE
            ParentID IS NULL
    
        UNION ALL
    
        SELECT
            TH.ID,
            TH.ParentID,
            CONVERT(varchar(128), Parent.Path + '/' + TH.Name) AS Path
        FROM
            tblHierarchy TH
        INNER JOIN
            Parent
        ON
            Parent.ID = TH.ParentID
    )
    SELECT * FROM Parent
    

    出力:

    ID  ParentID    Path
    1   NULL        1
    2   NULL        2
    3   NULL        3
    4   1       1/1.1
    5   1       1/1.2
    6   4       1/1.1/1.1.1
    


    1. 要求されたサービスを作成できません[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

    2. 2つの日付の間の月曜日を検索

    3. Oracleでうるう秒を処理する方法

    4. OracleEBSパスワードの有効期限/ポリシー/設定に関する便利なクエリ