Ho una tabella denominata Category
che ha una colonna denominata CategoryID
. C'è una colonna di riferimento nella stessa tabella chiamata fParentCategoryID
.
Devo separare virgola tutti gli ID categoria e i relativi ID sottocategoria. Ad esempio, se l'ID categoria padre di 10 è 1 e se l'ID categoria padre di 20 è 10, quando stampo l'ID categoria 20, devo stampare sia 1 che 10 come suoi genitori in valori separati da virgola.
Ho provato la query qui sotto ma ottengo NULL
per la ParChild
colonna. Per favore aiuto.
;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
utilizzare questo script per creare e popolare la tabella. (nota: c'è un limite di 30K al corpo della domanda .. Quindi ho dovuto usare pastebin per copiare il tuo codice e fare riferimento a esso)