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

レベルによるSql階層IDソート

    ――これはうまくいきますか?これは Sorting tree with SQL Server 2008 の他の列

    DECLARE @table TABLE (id INT NOT NULL PRIMARY KEY, name NVARCHAR(4000) NOT NULL, path HIERARCHYID)
    
    INSERT
    INTO    @table
    VALUES  
            (1, 'People', '/'),
            (2, 'Girls', '/1/'),
            (3, 'Boys', '/2/'),
            (4, 'Zoey', '/1/1/'),
            (5, 'Kate', '/1/2/'),
            (6, 'Monica', '/1/3/'),
            (7, 'Mark', '/2/1/'),
            (8, 'David', '/2/2/')
    
    ;WITH   q AS
            (
            SELECT  *, HIERARCHYID::Parse('/') AS newpath
            FROM    @table
            WHERE   path = HIERARCHYID::GetRoot()
            UNION ALL
            SELECT  t.*, HIERARCHYID::Parse(q.newpath.ToString() + CAST(ROW_NUMBER() OVER (ORDER BY t.name) AS NVARCHAR(MAX)) + '/')
            FROM    q
            JOIN    @table t
            ON      t.path.IsDescendantOf(q.path) = 1
                    AND t.path.GetLevel() = q.path.GetLevel() + 1
            )
    SELECT  replicate(convert(nvarchar, '-'), q.path.GetLevel()) + q.name /*+ '(' + q.newpath.ToString() + ')'*/
    FROM    q
    ORDER BY
            newpath
      

    1. liquibaseを使用したOracleではロールバックが機能していません

    2. PHPでの並列mysqlクエリ?

    3. sqlachemyのhave句でラベルを使用する

    4. 共通データのコンマ区切り値のグループ化