У меня есть рекурсивная таблица базы данных и иерархическое представление всех данных таблицы
CREATE VIEW dbo.vw_hierarchicalView
AS
WITH hView (Id,
IdParent,
Level)
AS
(
SELECT tableParent.Id,
tableParent.IdParent,
1 AS Level
FROM dbo.vw_ComplaintWithStatus tableParent
WHERE tableParent.IdParent IS NULL
UNION ALL SELECT tableChild.Id,
tableChild.IdParent,
hw.level + 1 AS Level
FROM dbo.vw_ComplaintWithStatus tableChild
INNER JOIN hView hw ON tableChild.IdParent = hw.Id
)
SELECT final.Id,
final.IdParent,
ISNULL(final.Level, 1) AS Level
FROM hView final
Результатом этого представления является следующая таблица:
Мне нужно, чтобы каждый корневой уровень имел свой уникальный идентификатор и этот идентификатор для копирования дочерним элементам.
желаемый результат таков:
Возможно ли это?
Спасибо за ваш совет и помощь.
http://sqlfiddle.com/#!18/8400c/3
CREATE TABLE Entries
(
ID BIGINT NOT NULL PRIMARY KEY,
ENTRY NVARCHAR(MAX) NOT NULL,
PARENT_ID BIGINT NULL FOREIGN KEY REFERENCES Entries (ID)
)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (1, 'TEXT', NULL)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (2, 'TEXT', 1)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (3, 'TEXT', 2)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (4, 'TEXT', NULL)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (5, 'TEXT', 4)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (6, 'TEXT', 4)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (7, 'TEXT', 6)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (8, 'TEXT', NULL)
INSERT INTO ENTRIES(ID, ENTRY, PARENT_ID) VALUES (9, 'TEXT', 1)