У меня есть таблица, содержащая три дерева:
T1 T2 T3 T4
-- -- -- --
A F B H
| | | | | | |
B C B C A C I
| | | |
D E D B
| |
G J
Я хотел бы иметь возможность получить distinct
узлы, расположенные под определенным значением узла.
Так что для B
это будет D, E, G
, D
, A, C
и J
, где distinct
равно A, C, D, E, G, J
declare @t table (t_id int, parent_t_id int, tree varchar(2), item varchar)
insert into @t
select 1, 0, 'T1', 'A' union
select 2, 1, 'T1', 'B' union
select 3, 1, 'T1', 'C' union
select 4, 2, 'T1', 'D' union
select 5, 2, 'T1', 'E' union
select 5, 4, 'T1', 'G' union
select 6, 0, 'T2', 'F' union
select 7, 6, 'T2', 'B' union
select 8, 6, 'T2', 'C' union
select 9, 7, 'T2', 'D' union
select 10, 0, 'T3', 'B' union
select 11, 10, 'T3', 'A' union
select 12, 10, 'T3', 'C' union
select 13, 0, 'T4', 'H' union
select 14, 13, 'T4', 'I' union
select 15, 14, 'T4', 'B' union
select 16, 15, 'T4', 'J'
select * from @t
Я подозреваю, что требуется CTE?