Застрял на этой проблеме иерархии, так вот. У меня есть следующая таблица иерархии, которая была усечена.
Иерархия была присоединена к другой таблице в столбце «коды» со следующим примером результата. Назовем эту таблицу1.
Для каждого отдельного идентификатора в таблице 1 я хочу использовать иерархию для поиска родителя, если он существует. Например, в столбце кодов 18 является родителем 19. Я хотел бы сложить или сгруппировать 19 с 18 и исключить этот ряд. Желаемый результат примерно такой.
Это делает то, что я хочу, используя метод 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
Я не могу понять, как получить эти желаемые результаты из этого примера данных. Можете ли вы объяснить, как вы, как человек, получаете значения во второй строке желаемого результата? Это кажется совершенно произвольным. Вы говорите: «Я хочу применить HierarchyID», но что значит «применить» «HierarchyID» и что такое «HierarchyID», поскольку в ваших данных нет такого столбца? Затем вы говорите «с родителем для этих кодов». Где в этих данных «родитель», какие «коды»?
Извиняюсь. Плохо написано с моей стороны. Обновленный вопрос.


Это самосоединение с функцией 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
Я думаю, вам лучше опубликовать некоторые ожидаемые результаты, так как я не могу понять ваше описание.