Рекурсивная сумма в древовидной структуре
У меня есть дерево в одной таблице. Таблица представляет собой дерево категорий, которые могут быть вложены бесконечно. У каждой категории есть столбец ProductCount, в котором указано, сколько товаров находится непосредственно в категории (без суммирования дочерних категорий).
Id | ParentId | Name | ProductCount
------------------------------------
1 | -1 | Cars | 0
2 | -1 | Bikes | 1
3 | 1 | Ford | 10
4 | 3 | Mustang | 7
5 | 3 | Focus | 4
Я хотел бы сделать SQL-запрос, который для каждой строки / категории дает мне количество продуктов, в том числе в дочерних категориях.
Выход для таблицы выше должен быть
Id | ParentId | Name | ProductCount | ProductCountIncludingChildren
--------------------------------------------------------------------------
1 | -1 | Cars | 0 | 21
2 | -1 | Bikes | 1 | 1
3 | 1 | Ford | 10 | 21
4 | 3 | Mustang | 7 | 7
5 | 3 | Focus | 4 | 4
Я знаю, что, вероятно, должен использовать CTE, но не могу заставить его работать так, как должен.
Любая помощь приветствуется!