求一条SQL语句,来建立Tree。表如图.请不要用存储过程。是1条sql语句。谢谢。

生成的表用来生成以下的树。... 生成的表用来生成以下的树。 展开
 我来答
badkano
2013-04-20 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144775 获赞数:885375
团长

向TA提问 私信TA
展开全部

直接上图

 

那个内码和编码必须为字符型,要不没法用charindex函数,要是你为数字型的话就cast转换一下,这个sqlserver任何版本都可用,不过那个上下级字段我觉得没用上,呵呵

百度网友9b9910e
2013-04-20 · TA获得超过397个赞
知道小有建树答主
回答量:721
采纳率:0%
帮助的人:451万
展开全部
有个取巧的办法,估计你这个层级最多也就几十个了。你可以先将目标和他的父级这样获得。
Select SUBSTRING(编码,1,2)
FROM [TestDB].[dbo].[目录表]
Where 内码 in (104,110)
Union
Select SUBSTRING(编码,1,4)
FROM [TestDB].[dbo].[目录表]
Where 内码 in (104,110)
Union
Select SUBSTRING(编码,1,6)
FROM [TestDB].[dbo].[目录表]
Where 内码 in (104,110)
Union
Select SUBSTRING(编码,1,8)
FROM [TestDB].[dbo].[目录表]
Where 内码 in (104,110)
层多,SubString 就多弄几个,然后简单了。假设上面这个表加TargetPlace
SELECT TOP 1000 [内码]
,[编码]
,[名称]
FROM [TestDB].[dbo].[目录表]
Where 内码 in (Select * From TargetPlace)
至于你第二个数据表,我直接用条件了。连接也很容易,相信你能搞定。
追问
感谢你的回答。不过我觉得这种方法不可取。其实这个帖子我开了两次。你可以看这个,共同学习。
http://zhidao.baidu.com/question/542867221?quesup2&oldq=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-20
展开全部
With myCTE AS (
SELECT * FROM [目录表] WHERE [内码] IN (SELECT [重点县镇] FROM [数据表])
UNION ALL
SELECT t.* FROM [目录表] t JOIN myCTE ON ( LEN(myCte.[编码]) = LEN(t.[编码]) + 2 AND LEFT(myCte.[编码], LEN(t.[编码])) = t.[编码] )
)
SELECT * FROM myCTE ORDER BY 1


SQL  Server  2005 以上版本可用。


查询结果如下:


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式