【发布时间】:2021-11-29 07:34:28
【问题描述】:
我需要在下图中显示以下层次结构
我用 cte 编写了以下代码: --===========================
;With Hierarchy (Name,Path)
AS
(
SELECT t.FamilyName, CAST(t.FamilyName AS varchar(max))
FROM tblFamily t
LEFT JOIN tblFamily t1
ON t1.FamilyID = t.ParentFamilyId
WHERE t1.FamilyID IS NULL
UNION ALL
SELECT t.FamilyName, CAST('All Categories'+'>'++h.FamilyName + '->' + t.FamilyName AS varchar(max))
FROM tblFamily h
INNER JOIN tblFamily t
ON t.FamilyID = h.ParentFamilyId
)
SELECT Name,Path
FROM Hierarchy
OPTION (MAXRECURSION 0)
我已经硬编码了所有类别,它是所有孩子的父母,但我也需要这个自然的如何做到这一点? 这是表格: enter image description here
【问题讨论】:
-
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或键入问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。
-
除此之外......正如有些人喜欢在这里说的:
;是语句终止符,而不是语句开始符。您应该使用;字符来终止所有 SQL 语句,而不仅仅是在可能产生错误的语句前面加上一个,例如WITH。 -
首先使用一个层次结构,你需要一个锚。哪个是主表,而主表只在它的NULL条件下。以下答案有助于结构和解释:stackoverflow.com/questions/47660012/t-sql-hierarchy-query
标签: sql sql-server tsql