日期:2014-05-19  浏览次数:20610 次

100分求一个树型查询存储过程或者函数
表结构:
ID   varchar(36),--Guid,ID
DisplayName   nvarchar(50),--显示名称,
ParentID   varchar(36)     --Guid   上级ID

我是在Reporting   Services上做一个下拉选框,要查询出所有的记录,以树型的形式显示出来
|下拉列表诓|
一级
    一级子1
        一级子1-1
        一级子1-2
    一级子2
二级
    二级子1
    二级子2

请高手帮忙,多谢

------解决方案--------------------
老大书上的示例:

--测试数据
DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001 ',NULL , '山东省 '
UNION ALL SELECT '002 ', '001 ', '烟台市 '
UNION ALL SELECT '004 ', '002 ', '招远市 '
UNION ALL SELECT '003 ', '001 ', '青岛市 '
UNION ALL SELECT '005 ',NULL , '四会市 '
UNION ALL SELECT '006 ', '005 ', '清远市 '
UNION ALL SELECT '007 ', '006 ', '小分市 '

--深度排序显示处理
--生成每个节点的编码累计(相同当单编号法的编码)
DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ID,@Level,ID
FROM @t
WHERE PID IS NULL
WHILE @@ROWCOUNT> 0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
FROM @t a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END

--显示结果
SELECT SPACE(b.Level*2)+ '|-- '+a.Name
FROM @t a,@t_Level b
WHERE a.ID=b.ID
ORDER BY b.Sort
------解决方案--------------------
在论坛里搜索关键字 "树 "
很多的
------解决方案--------------------
学习学习