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

关与一个查询 问题 各位帮忙看看 谢谢
table  
顶层物料 父项    子料      制/购 类型  用量
10001     10001         10001-1       M               P               1
10001     10001         10001-2       M               P               2
10001     10001-2     10001-25     M               P               2
10001     10001-1         A               M               N               2
10001     10001-25       B               M               N               2

  我想找子项中类型为N,   制/购为M的资料的用量(最顶层为1)
10001     10001-1         A               M               N               2
10001     10001-25       B               M               N               8




------解决方案--------------------
我想找子项中类型为N, 制/购为M的资料的用量(最顶层为1)
10001 10001-1 A M N 2--这里是不是应该3 ?
10001 10001-25 B M N 8


------解决方案--------------------
SELECT *,SUM(用量) 总用量 FROM table WHERE 类型= 'N ' AND [制/购]= 'M '
------解决方案--------------------
SELECT * FROM table WHERE 类型= 'N ' AND [制/购]= 'M '
------解决方案--------------------
我想找子项中类型为N, 制/购为M的资料的用量(最顶层为1)
=========================================================
没明白,什么子项?能不能说的明白点?
------解决方案--------------------
SELECT * FROM table WHERE 类型= 'N ' AND [制/购]= 'M '

------解决方案--------------------
--寫了個跑游標的,覺得沒這麼單純@_@ ,bom表很複雜的,還有routing的影響


--建立函數,查找所有父結點
Create function dbo.fn_test_bom( @child_part varchar(30))
returns @t_level table(part varchar(30),level int)
AS
begin
declare @level int
set @level=0
insert into @t_level select @child_part,@level
while @@rowcount> 0
begin
set @level=@level+1
insert into @t_level select a.parent_part,@level
from [Test_bom] a,@t_level b
where a.child_part=b.part
and b.level=@level-1
end
return
end

Go
create table Test_bom( topic varchar(10), parent_part varchar(20), child_part varchar(20), [制/購] varchar(10),類型 varchar(10),quantity int )
insert into Test_bom
select '10001 ', '10001 ', '10001-1 ', 'M ', 'P ',1 union all
select '10001 ', '10001 ', '10001-2 ', 'M ', 'P ',2 union all
select '10001 ', '10001-2 ', '10001-25 ', 'M ', 'P ',2 union all
select '10001 ', '10001-1 ', 'A ', 'M ', 'N ',2 union all