Ich habe eine Tabelle Category
mit einer Spalte namens CategoryID
. In derselben Tabelle befindet sich eine Referenzierungsspalte mit dem Namen fParentCategoryID
.
Ich muss alle Kategorie-IDs und ihre Unterkategorie-IDs durch Kommas trennen. Zum Beispiel: Wenn die übergeordnete Kategorie-ID 10 1 ist und wenn die übergeordnete Kategorie-ID 20 10 ist, muss ich beim Drucken der Kategorie-ID 20 sowohl 1 als auch 10 als übergeordnete Elemente in durch Kommas getrennten Werten drucken.
Ich habe die folgende Abfrage versucht, aber ich bekomme NULL
für ParChild
Spalte. Bitte helfen Sie.
;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
Verwenden Sie dieses Skript , um die Tabelle zu erstellen und zu füllen. (Hinweis: Der Fragentext ist auf 30 KB begrenzt. Ich musste also Pastebin verwenden, um Ihren Code zu kopieren und darauf zu verweisen.)
quelle