当前位置: 代码迷 >> Sql Server >> 关与一个查询 有关问题 各位帮忙看看 多谢
  详细解决方案

关与一个查询 有关问题 各位帮忙看看 多谢

热度:31   发布时间:2016-04-27 16:44:30.0
关与一个查询 问题 各位帮忙看看 谢谢
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 @[email protected]+1
insert into @t_level select a.parent_part,@level
from [Test_bom] a,@t_level b
where a.child_part=b.part
and [email protected]
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
  相关解决方案