帮我看看这条SQL语句应怎么写!(100分)

Y

ysai

Unregistered / Unconfirmed
GUEST, unregistred user!
Tab1
------
订单ID
款号
数量
=======
Tab2
------
款号
材料
数量

问题:怎么求出一个订单所使用的所有材料合?
一个订单可订多种款号
一个款号由多种材料组成
多个款号可有相同的组成材料


订单ID 款号 数量
1 A 3
1 B 2
1 C 5
款号 材料 数量
A A1 3.5
A A2 8
B A1 4
B B1 6.19
C A2 4
C B1 2
要求结果
材料 数量
A1 19.5
A2 44
B1 22.38

分不够再加
 
材料*数量=金额吗?
 
订单的数量*材料的数量=该订单该款号所使用的材料数量,只要求数量,不要求金额
 
select tab1.id,sum(tab1.数量*tab2.材料*tab2.数量) from tab1,tab2
where tab1.订单ID=???
and tab1.款号=tab2.款号
group by tab1.id


 
smallbs的行不通
订单的款号可是有数量的,怎么算进去?
 
select tab2.材料,sum(tab1.数量*tab2.数量) from tab1,tab2
where tab1.订单ID=???
and tab1.款号=tab2.款号
group by tab2.材料
 
注意:
1个订单对应多个款号,一个款号有多个数量
一个款号由不同的材料组成,而且材料的数量也不同(不要与订单所订的款号数量搞在一起)
一个材料可用在不同的款号中,但数量不同
求:单个订单所用的不同材料的总量,没用的可为0也可不列出
如能求出多个订单所用的材料总量,另给100分
 
select 材料,sum(a.数量*b.数量) 数量 from table1 a,table2 b
where a.款号=b.款号
and 订单ID=?
group by 材料
 
首先给你指出来,(一个材料可用在不同的款号中,但数量不同)这个条件是多余的,
如果这不是楼主需要的答案,说明楼主给的条件还不够。
是楼主自己把问题搞复杂了,呵呵)
 
下列语句在ORACLE中一定可以:
select 材料,sum(a.数量*b.数量) 数量 from table1 a,table2 b
where 订单ID=? and a.款号=b.款号
group by 材料
order by 材料
 
先用临时表把表2中的各款号对应的材料数汇总出来,然后再去与表1进行汇总计算
select 款号,材料,sum(数量) 数量 into #temp_table
from table2
group by 款号,材料
select 订单ID,材料,sum(数量) 数量
from table1 #temp_table
where table1.款号=#temp_table.款号
group by 订单ID,材料
 
多人接受答案了。
 
顶部