日期:2014-05-18  浏览次数:20428 次

各位幫忙,SQL Server2000編寫bom
BOM的簡單結構為:A(B,C),   C(D,E)   E(F,G)
要求輸入A數量,直接生成一個TABLE表,顯示物料清單B,C,D,E,F,G
請教各位大俠,謝謝!


------解决方案--------------------
--這個嗎?
create table T (parent_part varchar(10),child_part varchar(10))
insert into T
select 'A ', 'B ' union all
select 'A ', 'C ' union all
select 'C ', 'D ' union all
select 'C ', 'E ' union all
select 'E ', 'F ' union all
select 'E ', 'G '

GO
/*建立function,查找指定節點的所有子結點*/
Create function fn_bom(@parent varchar(10))
returns @t table(part varchar(10),level int)
AS
begin
declare @level int
set @level=1
insert into @t select @parent,@level
while @@rowcount> 0
begin
set @level=@level+1
insert into @t
select a.child_part,@level
from T a,@t b
where a.parent_part=b.part
and b.level=@level-1
end
return
end
GO

--找出A的子結點
select part from dbo.fn_bom( 'A ')
where level> 1
/*
part
----------
B
C
D
E
F
G
*/

drop table t
drop function fn_bom