J'ai une table nommée Category
qui a une colonne nommée CategoryID
. Il y a une colonne de référence dans la même table appelée fParentCategoryID
.
J'ai besoin de séparer tous les ID de catégorie et leurs ID de sous-catégorie par une virgule. Par exemple - si l'ID de catégorie parent de 10 est 1 et si l'ID de catégorie parent de 20 est 10, alors lorsque j'imprime l'ID de catégorie 20, je dois imprimer à la fois 1 et 10 en tant que parents dans des valeurs séparées par des virgules.
J'ai essayé la requête ci-dessous mais j'obtiens NULL
pour la ParChild
colonne. Veuillez aider.
;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
utilisez ce script pour créer et remplir le tableau. (note: il y a une limite de 30K au corps de la question .. J'ai donc dû utiliser pastebin pour copier votre code et le référencer)