Eu tenho uma tabela chamada Category
que tem uma coluna chamada CategoryID
. Há uma coluna de referência na mesma tabela chamada fParentCategoryID
.
Eu preciso obter todos os IDs de categoria e seus IDs de subcategoria separados por vírgula. Por exemplo - se o ID da categoria pai de 10 for 1 e se o ID da categoria pai de 20 for 10, quando eu imprimir o ID da categoria 20, preciso imprimir 1 e 10 como seus pais em valores separados por vírgula.
Eu tentei a consulta abaixo, mas recebo NULL
a ParChild
coluna. Por favor ajude.
;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
use este script para criar e preencher a tabela. (nota: há um limite de 30K para o corpo da pergunta. Então, eu tive que usar o pastebin para copiar seu código e fazer referência a ele)
fonte