Проблема с отображением иерархических записей (SQL Server 2005) [SET BASED] - PullRequest
0 голосов
/ 28 июня 2010

Я могу сделать запрос, чтобы получить записи Master -Chile. Но как отображать их иерархически. Любой пример поможет

Я использую SQL Server 2005

1 Ответ

0 голосов
/ 28 июня 2010

Есть более элегантные способы, но эта быстрая модификация будет работать:

;With bottomupParentChild AS 
( 
    SELECT EmpId AS parents, ReportsTo,CAST(EmpName AS VARCHAR(1000)) AS [Path],  0 AS [Level], EmpName 
    FROM @Employees 
    WHERE EmpId = @childNode 
    UNION ALL 
    SELECT i.EmpId AS parents, i.ReportsTo, CAST(gp.[Path] + '/' + i.EmpName AS VARCHAR(1000)) AS [Path],  
         gp.[Level]+1 AS [Level],i.EmpName 

    FROM @Employees i 
    JOIN bottomupParentChild gp ON i.EmpId = gp.ReportsTo 
) 
, cteRows (TotalRows)
 as (select count(*) - 1 from bottomupParentChild)

SELECT ABS(Level - TotalRows), REPLICATE('    ', ABS(Level - TotalRows)) + EmpName as [Hierarchy] 
FROM bottomupParentChild 
 cross join cteRows
ORDER BY  [Path] desc; 

Я добавил второй cte, который получает количество строк из первого cte, и использую его, чтобы "перевернуть" иерархию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...