Tôi có một bảng được đặt tên Category
có một cột được đặt tên CategoryID
. Có một cột tham chiếu trong cùng một bảng được gọi fParentCategoryID
.
Tôi cần lấy tất cả các ID danh mục và ID danh mục con của chúng được phân tách bằng dấu phẩy. Ví dụ: nếu ID danh mục cha mẹ của 10 là 1 và nếu Id danh mục chính của 20 là 10 thì khi tôi in ID danh mục 20, tôi cần in cả 1 và 10 dưới dạng cha mẹ của nó trong các giá trị được phân tách bằng dấu phẩy.
Tôi đã thử truy vấn dưới đây nhưng tôi nhận được NULL
cho ParChild
cột. Xin vui lòng giúp đỡ.
;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
sử dụng tập lệnh này để tạo và điền vào bảng. (lưu ý: có giới hạn 30K cho phần thân câu hỏi. Vì vậy, tôi đã phải sử dụng pastebin để sao chép mã của bạn và tham chiếu nó)