--測試資料
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)
declare @level int
set @level=0
insert @t_level select id,@level
from @t
where pid is null
while @@rowcount>0
begin
set @level=@level+1
insert @t_level select a.id,@level
from @t a,@t_level b
where a.pid=b.id
and b.level=@level-1
end--顯示結果
select a.*
from @t a,@t_level b
where a.id=b.id
order by b.level,b.id
/*--結果
id pid name
------- --------- ----------
001 null 山東省
005 null 四會市
002 001 煙台市
003 001 青島市
006 005 清遠市
004 002 招遠市
007 006 小分市
--*/
樹形資料深度排序處理示例 遞迴法 sql
測試資料 create table tb id char 3 pid char 3 name nvarchar 10 insert tb select 001 null 山東省 union all select 002 001 煙台市 union all select 004 002 招遠市 uni...
樹形資料查詢示例
參考 樹形資料查詢示例 示例資料 create table tb id int identity 1,1 pid int,name varchar 20 insert tb select 0,中國 union all select 0,美國 union all select 0,加拿大 union ...
樹形資料深度排序處理示例 模擬單編號法 sql
測試資料 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 招遠市 unio...