Печать данных дерева в иерархии с пробелами и пробелами - PullRequest
0 голосов
/ 21 января 2019

У меня есть таблица 3 SQL с узлами дерева и листьями дерева и описанием узла Я хочу напечатать данные в следующем формате

Parent6 Parent5 Parent4 Parent3 Parent1 Child Description
                 A1
                         B1
                                 C1    
                                          D1A  - Child 1
                                          D1B  - Child 2
                                 C2
                                          D2A - Child 3
                                          D2B - Child 4
                         B2

У меня есть TreeNodeNuM, TreeName, уровень в таблице узлов

1 Ответ

0 голосов
/ 21 января 2019

Я сделал этот код для аналогичной вещи, я обычно использую только столбцы LongID и LongDescription для своих нужд, я добавил случаи, чтобы вывод был похож на ваш пример, обратите внимание, что уровень начинается с 0 для моей иерархии

WITH cte AS
  (
    SELECT     CAST(RIGHT('000' + CAST(HierarchyID AS VARCHAR),3) AS VARCHAR(100)) as M,
               CAST(Description AS VARCHAR(MAX)) AS LongID, *
    FROM       HIERARCHY
    WHERE Level = 0
    UNION ALL
    SELECT     CAST(cte.M + '_' + RIGHT('000' + CAST(si.HierarchyID AS varchar), 3) AS VARCHAR(100)),
               CAST(cte.LongID + '->' + si.Description AS VARCHAR(MAX)),
               si.*
    FROM       HIERARCHY si
    INNER JOIN cte
    ON si.ParentHierarchyID = cte.HierarchyID
  )
  SELECT 
  CASE WHEN Level = 0 THEN Description ELSE '' END AS Parent6,
  CASE WHEN Level = 1 THEN Description ELSE '' END AS Parent5,
  CASE WHEN Level = 2 THEN Description ELSE '' END AS Parent4,
  CASE WHEN Level = 3 THEN Description ELSE '' END AS Parent3,
  CASE WHEN Level = 4 THEN Description ELSE '' END AS Parent1,
  CASE WHEN Level = 5 THEN Description ELSE '' END AS Child, 
  FROM cte
  ORDER BY LongID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...