Я снова борюсь с рекурсивным CTE.У меня есть таблица с самообращением, с оценкой, связанной с каждой строкой.Мне нужно разрешить порядок сортировки конечных узлов по счету, соответствующий порядку сортировки родительских узлов (также отсортированный по счету).Группировка выглядит следующим образом:
Groups Score
------------------------------------
Group 1 0.95
Group a 0.7
Group i 0.9
Group ii 0.7
Group b 0.9
Group iii 0.5
Group iv 1.0
Group 2 0.9
Group c 0.5
Group d 0.8
Group 3 1.0
Это ожидаемый набор результатов:
GroupID GroupName Score Rank
------------------------------------
11 Group 3 1.0 1
7 Group iv 1.0 2
6 Group iii 0.5 3
3 Group i 0.9 4
4 Group ii 0.7 5
10 Group d 0.8 6
9 Group c 0.5 7
Вот примеры записей.Заранее спасибо.
declare @tblGroups table (
GroupID int,
GroupName nvarchar(50),
ParentID int,
Score float
)
insert into @tblGroups values (1, 'Group 1', null, 0.95)
insert into @tblGroups values (2, 'Group a', 1, 0.7)
insert into @tblGroups values (3, 'Group i', 2, 0.9)
insert into @tblGroups values (4, 'Group ii', 2, 0.7)
insert into @tblGroups values (5, 'Group b', 1, 0.9)
insert into @tblGroups values (6, 'Group iii', 5, 0.5)
insert into @tblGroups values (7, 'Group iv', 5, 1.0)
insert into @tblGroups values (8, 'Group 2', null, 0.9)
insert into @tblGroups values (9, 'Group c', 8, 0.5)
insert into @tblGroups values (10, 'Group d', 8, 0.8)
insert into @tblGroups values (11, 'Group 3', null, 1.0)
select
g.*
from
@tblGroups g