樹形資料深度排序處理示例 模擬單編號法 sql

2022-09-01 14:48:17 字數 1177 閱讀 3759

--測試資料

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 a.*

from @t a,@t_level b

where a.id=b.id

order by b.sort

/*--結果

id   pid   name      

------ --------- ----------

001  null 山東省

002  001   煙台市

004  002   招遠市

003  001   青島市

005  null 四會市

006  005   清遠市

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...

樹形資料廣度排序處理示例 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...

樹形資料查詢示例

參考 樹形資料查詢示例 示例資料 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 ...