0

組織スキーマを格納する次のデータベース テーブル スキームがあります。

OrganizationID   Uniqueidentifier 
ParentID         Uniqueidentifier
Name             String

サンプルデータ:

OrganizationID  Name    ParentID
     1            A 
     2            B        1
     3            C        2

私は持っていることを期待しています

Level1  Level2  Level3  Level4  Level5
   1      2       3       ...     ...

T-SQLでこれを行うにはどうすればよいですか?

4

1 に答える 1

0

これで目的は達成できましたか?Sqlfiddle のセットアップはこちら: http://sqlfiddle.com/#!3/9b107/2

; WITH hierarchy_CTE
AS(
    SELECT OrganizationID, name, parentid, 1 AS Level
    FROM #t1 AS Employee
    WHERE OrganizationID = 4

    UNION ALL

    SELECT boss.OrganizationID, boss.Name, boss.ParentID, Level + 1
    FROM #t1 boss
    INNER JOIN hierarchy_CTE ON boss.OrganizationID = hierarchy_CTE.parentid
    WHERE boss.parentid <> 4 OR boss.parentid IS NULL
  )
, hierarchy2_CTE AS 
(SELECT cte.Level, cte.name
FROM hierarchy_CTE cte)


SELECT * FROM hierarchy2_CTE
PIVOT
(
    MAX(NAME)
    FOR Level IN ([1], [2], [3], [4])
) as pvt

ここの PinalDave の記事から適応: http://blog.sqlauthority.com/2012/04/24/sql-server-introduction-to-hierarchical-query-using-a-recursive-cte-a-primer/

これは基本的に、特定の従業員 (この場合は organizationID が 4 の従業員) に基づいて 1 つの行を提供し、その従業員の指揮系統を見つけます。

于 2013-03-22T15:11:53.180 に答える