Я работаю над способом получения идентификатора строки из таблицы с именем [Group].В дополнение к автоматически увеличивающемуся столбцу Id, есть также столбец ParentGroupId, который ссылается на идентификатор другой строки.
Я хочу взять идентификатор родительской группы и скопировать всю иерархию в нее.
У меня есть другая таблица AttributeValues, в которой есть столбец с названием EntityId, который ссылается на [Group] .Id.Мне нужно скопировать все эти значения и использовать вновь созданные идентификаторы из скопированной иерархии групп.
Количество уровней дочерних групп не является конечным.
Я создал CTE со всеми строкаминачиная с родительской строки.Я полагаю, что могу использовать этот CTE в качестве основы для обеих вставок.Я знаю, что мне нужно создать новые строки и сохранить новый идентификатор где-нибудь для использования в качестве идентификатора родительской группы следующих уровней и скопировать значения в таблицу значений атрибута, но я признаю, что я в растерянности.
Select
Id
,IsSystem
,ParentGroupId
,GroupTypeId
-- More columns are copied, but I removed for brevity
From [Group] g
Where ParentGroupId = 6615
UNION All
Select
gs.Id
,gs.IsSystem
,gs.ParentGroupId
,gs.GroupTypeId
-- More columns are copied, but I removed for brevity
From [Group] gs
Inner Join cte_group_structure gs2
On gs2.Id = gs.ParentGroupId
)
SELECT
*
FROM
cte_group_structure;