BOM資料排序及分級顯示

2021-08-29 13:17:00 字數 1217 閱讀 3209

bom資料排序及分級顯示

--示例資料:

create table bomsub(parent_item varchar(10),sub_item varchar(10))

insert bomsubselect 'a','aa'

unionallselect 'a','ab'

unionallselect 'aa','aaa'

unionallselect 'aa','aab'

go問題描述:

parent_item是父項,sub_item是子項,根據根據父子關係排序,並生成每個專案的層次。對於示例資料,要求結果如下:

parent_itemlevel

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

a0|-aa1

|--aaa2

|--aab2

|-ab1

(所影響的行數為 5 行)

--查詢處理的儲存過程

create proc p_qry

asdeclare @t table(parent_item varchar(10),level int,path varchar(8000))

declare @l int

set @l=0

insert @t select distinct parent_item,@l,right(space(20)+parent_item,20)

from bomsub a

where not exists(

select * from bomsub where sub_item=a.parent_item)

while @@rowcount>0

begin

set @l=@l+1

insert @t select a.sub_item,@l,b.path+right(space(20)+a.sub_item,20)

from bomsub a,@t b

where a.parent_item=b.parent_item and b.level=@l-1

endselect parent_item=case level when 0 then '' else '|'+replicate('-',level) end+parent_item,

level

from @t

order by path

go--呼叫

exec p_qry

原帖位址

BOM資料排序及分級顯示

bom資料排序及分級顯示 示例資料 create table bomsub parent item varchar 10 sub item varchar 10 insert bomsub select a aa union all select a ab union all select aa a...

BOM資料排序及分級顯示

bom資料排序及分級顯示 示例資料 create table bomsub parent item varchar 10 sub item varchar 10 insert bomsub select a aa union all select a ab union all select aa a...

BOM資料排序及分級顯示

bom資料排序及分級顯示 示例資料 create table bomsub parent item varchar 10 sub item varchar 10 insert bomsub select a aa union all select a ab union all select aa a...