Sql 我的脚本有问题。请帮忙
我写这篇文章,我有这个表的结构Sql 我的脚本有问题。请帮忙,sql,sql-server,loops,recursion,common-table-expression,Sql,Sql Server,Loops,Recursion,Common Table Expression,我写这篇文章,我有这个表的结构 CREATE TABLE #TEMP ( IdNode varchar(5), IdSubNode varchar(5), Lvl int ) INSERT INTO #TEMP VALUES ('A', null,0), ('A','B',1), ('A','C',1), ('A','D',1) INSERT INTO #TEMP VALUES ('B','B1',2), ('B','B2',2), ('B','B3',2) INSERT INT
CREATE TABLE #TEMP
(
IdNode varchar(5),
IdSubNode varchar(5),
Lvl int
)
INSERT INTO #TEMP VALUES ('A', null,0), ('A','B',1), ('A','C',1), ('A','D',1)
INSERT INTO #TEMP VALUES ('B','B1',2), ('B','B2',2), ('B','B3',2)
INSERT INTO #TEMP VALUES ('D','D1',2), ('D','D2',2), ('D','D3',2)
INSERT INTO #TEMP VALUES ('B1','BB1',3), ('B1','BB2',3), ('B1','BB3',3)
SELECT * FROM #TEMP
请,我需要这样的查询:
/* -- I need this format
A /
/ B /
/ B1
/ BB1
/ BB2
/ BB3
/ B2
/ B3
/ C /
/ D /
/ D1
/ D2
/ D3
*/
谢谢你的帮助。你想要这样的东西吗
SELECT DISTINCT *
FROM
(
SELECT DISTINCT IdNode AS '1st_Level'
FROM #TEMP
WHERE LEN(IdNode)=1
UNION ALL
SELECT DISTINCT IdSubNode AS '1st_Level'
FROM #TEMP
WHERE LEN(IdSubNode) = 1)A
LEFT JOIN
(SELECT DISTINCT IdNode AS '2nd_Level'
FROM #TEMP
WHERE LEN(IdNode)=2
UNION ALL
SELECT DISTINCT IdSubNode AS '2nd_Level'
FROM #TEMP
WHERE LEN(IdSubNode) = 2)B
ON A.[1st_Level] = LEFT(B.[2nd_Level],1)
LEFT JOIN
(SELECT DISTINCT IdNode AS '3rd_Level'
FROM #TEMP
WHERE LEN(IdNode)=3
UNION ALL
SELECT DISTINCT IdSubNode AS '3rd_Level'
FROM #TEMP
WHERE LEN(IdSubNode) = 3)C
ON LEFT(B.[2nd_Level],1) = LEFT(C.[3rd_Level],1)
我的脚本有问题。请提供帮助
请更改主题行,使其更具描述性和针对您的问题。请查找“连接方式”或“层次结构”查询,然后再试一次,当您再次陷入困境时。。发布一个问题。欢迎访问SO!从您的问题中,我只能猜测您希望以某种类似树的分层格式打印查询结果。如果是这样,您应该指定应用程序使用的编程语言,并告诉我们到目前为止您尝试了什么。就目前而言,你的问题过于宽泛,不够具体,你不太可能得到帮助。您可能需要阅读“帮助”页面(链接位于本网站右上角),了解如何在此处获得最佳帮助。谢谢。我会试着把代码放进去。lvl是动态的。