У меня есть таблица с именем Category
столбца CategoryID
. В той же таблице есть столбец ссылок fParentCategoryID
.
Мне нужно, чтобы все идентификаторы категорий и идентификаторы их подкатегорий были разделены запятой. Например: если ID родительской категории 10 равен 1, а ID родительской категории 20 равен 10, то когда я печатаю ID 20 категории, мне нужно вывести как 1, так и 10 в качестве его родителей в значениях, разделенных запятыми.
Я попытался запрос ниже, но я получаю NULL
для ParChild
столбца. Пожалуйста помоги.
;WITH
cteReports
AS
(
SELECT c.CategoryID,
c.fParentCategoryID,
[level] = 1,
ParChild=cast(CAST(c.fParentCategoryID AS VARCHAR(200)) + ',' + CAST(c.CategoryID AS VARCHAR(200)) AS VARCHAR(MAX))
FROM retail.Category c
WHERE c.fParentCategoryID is NULL
UNION ALL
SELECT c.CategoryID,
c.fParentCategoryID,
[level] + 1,
ParChild = ParChild + ',' + CAST(c.CategoryID AS VARCHAR(200))
FROM retail.Category c
JOIN cteReports r
ON c.fParentCategoryID = r.CategoryID
)
SELECT *
FROM cteReports cr
используйте этот скрипт для создания и заполнения таблицы. (примечание: для тела вопроса существует ограничение в 30 КБ. Поэтому мне пришлось использовать pastebin, чтобы скопировать код и сослаться на него)
источник