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

SQL 2005 での再帰クエリ結果からの階層の順序付け

    これを行う 1 つの方法は、以前のすべての ID をリストに含む階層列を追加することです:

    with tasks (TaskId, ParentTaskId, [Name], TaskIdList) as
    (
        select parentTasks.TaskId,
               parentTasks.ParentTaskId,
               parentTasks.[Name],
               parentTasks.TaskId
        from   Task parentTasks
        where  ParentTaskId is null
    
        union all
    
        select childTasks.TaskId,
               childTasks.ParentTaskId,
               childTasks.[Name],
               tasks.TaskIdList + '.' + childTasks.TaskId
        from   Task childTasks
        join   tasks
        on     childTasks.ParentTaskId = tasks.TaskId
    )
    
    select TaskId, ParentTaskId, [Name] from tasks
       order by TaskIdList
    

    これは、TaskId が文字列ベースの ID であることを前提としていることに注意してください。そうでない場合は、連結する前に varchar にキャストする必要があります。



    1. Oracleで正規表現によってコンマ区切りのリストから重複を削除するにはどうすればよいですか?重複する値は必要ありませんか?

    2. 重複する時間間隔を平坦化/マージする

    3. GACのMySql.Data、それでもSecurityException

    4. Anormを使用して、多くの列を持つテーブルでバッチ挿入