我有一个名为的表Category
,其中有一个名为的列CategoryID
。同一张表中有一个引用列,称为fParentCategoryID
。
我需要用逗号分隔所有类别ID及其子类别ID。例如-如果父类别ID为10,而父类别ID为20,则我打印类别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
使用此脚本创建并填充表。 (注意:问题正文的上限为30K。因此,我不得不使用pastebin复制您的代码并引用它)