Иерархия SQL Server, выбор родительских узлов для разных идентификаторов - PullRequest
0 голосов
/ 28 июня 2019

Застрял в этой проблеме иерархии, так что здесь идет.У меня есть следующая таблица иерархии, которая была усечена.

HierarchyIDs

Иерархия была присоединена к другой таблице в столбце «коды» сследующий пример результата.Давайте назовем эту таблицу 1.

table with hierarcjy

Для каждого отдельного идентификатора в таблице1 я хочу использовать иерархию, чтобы найти родителя, если он существует.Например, под столбцом кодов 18 является родителем 19. Я хотел бы сложить или сгруппировать 19 с 18 и исключить эту строку.Желаемый результат примерно такой:

desired result

Это делает то, что я хочу, используя метод GetAncestor:

SELECT A.OrgNode, A.Codes, A.ID, B.OrgNode, B.Codes, B.ID FROM table1 A INNER JOIN table1 B ON A.OrgNode.GetAncestor(1) = B.OrgNode WHERE A.ID = B.ID

1 Ответ

0 голосов
/ 29 июня 2019

Это самостоятельное соединение с функцией GetAncestor сделало то, что я хотел, с «где» для того же идентификатора.

SELECT A.OrgNode, A.Codes, A.ID, B.OrgNode, B.Codes, B.ID FROM table1 A INNER JOIN table1 B ON A.OrgNode.GetAncestor(1) = B.OrgNode WHERE A.ID = B.ID

...