У меня есть запрос для идентификации узлов в дереве с родительским отношением. Что не так с этим запросом? Хотя у меня есть внутренние узлы, соответствующий регистр событий никогда не выполняется. Всегда я получаю результат как Лист или Корневые узлы. Никогда не получайте Inner на выходе. Что я могу сделать неправильно?Специфичный пример оператора SQL CASE
WITH CTE(N, P, [Level]) AS ( SELECT N, P, 1 FROM BST B WHERE P IS NULL UNION ALL SELECT B.N, B.P, [Level] + 1 FROM BST B JOIN CTE ON B.P = CTE.N ) SELECT N, CASE WHEN [Level] = 1 Then 'Root' WHEN [Level] < MAX([Level]) AND [Level] > 1 THEN 'Inner' WHEN [Level] = MAX([Level]) THEN 'Leaf' END FROM CTE GROUP BY N, [Level] ORDER BY N ASC;
Пример ввода
N P
1 2
3 2
6 8
9 8
2 5
8 5
5 NULL
Пример вывода
1 Leaf
2 Inner
3 Leaf
5 Root
6 Leaf
8 Inner
9 Leaf
Вы можете разместить некоторые выборочные данные, а также, чтобы мы могли воспроизвести проблему? –