问题:我可以修改查询来显示导航路径吗?
我看到了你关于公共表表达式的文章,其中有一个递归查询。如何修改这个查询来显示从树到每个节点的路径,并以不同的格式返回到结果集?例如,如果数据是:
ID ParentId
A null
B A
C A
D B
E C
我希望查询返回的结果是:
ID级别路径
a1a
b2a . B
c2a . C
D3 A . B . D
E3 A . B . C
专家回答:
创建表#x
(
ID CHAR(1),
ParentID CHAR(1)
)
INSERT #x (ID,ParentID)
SELECT 'A ',NULL
UNION ALL
SELECT ' B ',' A'
UNION ALL
SELECT 'C ',' A'
UNION ALL
SELECT 'D ',' B'
UNION ALL
SELECT 'E ',' C '
;使用FullPath作为
(
SELECT
ID,
1作为级别,
CONVERT(VARCHAR(MAX),ID)作为来自# x
的路径,其中ParentID为空
联合所有
选择
x.ID,
FP。Level + 1为Level,
FP。路径+' . '+x . ID AS Path
FROM # x AS x
JOIN full Path FP ON x . ParentID = FP。ID
)
SELECT *
FROM full path
0条评论