t1--产品库,产品中包含各种物料,k1,v1表示唯一产品,m1是产品k1,v1中的一种物料,用了50g.
物料名,数量,单位,产品编号,产品版本
m1 50 g k1 v1
m2 5 mm k1 v1
m3 20 g k1 v1
m5 30 mm k2 v1
m6 25 g k2 v2
.........t2--已经申请出口的产品,但未真正出口
合同号,产品编号,产品版本,数量2
k2007a k1 v1 3000
k2007a k2 v1 5000
k2007b k2 v1 4500
k2007c k1 v1 5000
k2007c k2 v2 6000
t3--已经出口的产品
合同号,产品编号,产品版本,数量3
k2007a k1 v1 2000
k2007a k2 v1 1000
k2007b k2 v1 3000
求:下表,
物料名,申请出口总数量,已经出口总数量,剩下未出口数量
物料名,数量,单位,产品编号,产品版本
m1 50 g k1 v1
m2 5 mm k1 v1
m3 20 g k1 v1
m5 30 mm k2 v1
m6 25 g k2 v2
.........t2--已经申请出口的产品,但未真正出口
合同号,产品编号,产品版本,数量2
k2007a k1 v1 3000
k2007a k2 v1 5000
k2007b k2 v1 4500
k2007c k1 v1 5000
k2007c k2 v2 6000
t3--已经出口的产品
合同号,产品编号,产品版本,数量3
k2007a k1 v1 2000
k2007a k2 v1 1000
k2007b k2 v1 3000
求:下表,
物料名,申请出口总数量,已经出口总数量,剩下未出口数量
a.申请出口总数量-isnull(b.已经出口总数量,0) as 剩下未出口数量
from (
select t1.物料名,sum(t1.数量*t2.数量2) as 申请出口总数量
from t1,t2
where t1.产品编号=t2.产品编号 and t1.产品版本=t2.产品版本
) as a left join (
select t1.物料名,sum(t1.数量*t3.数量3) as 已经出口总数量
from t1,t3
where t1.产品编号=t3.产品编号 and t1.产品版本=t3.产品版本
) as b
on a.物料名=b.物料名
left join
(
select 产品编号,sum(isnull(数量2,0))as 申请出口总数量 from t2 group by 产品编号
)b on a.产品编号=b.产品编号
left join
(
select 产品编号,sum(isnull(数量3,0))as 已经出口总数量 from t3 group by 产品编号
)c on a.产品编号=c.产品编号
物料名 申请出口总数量 已经出口总数量 剩下未出口数量
---------- ----------- ----------- -----------
m1 8000 2000 6000
m2 8000 2000 6000
m3 8000 2000 6000
m5 15500 4000 11500
m6 15500 4000 11500(所影响的行数为 5 行)
left join
(
select 产品编号,产品版本,sum(isnull(数量2,0))as 申请出口总数量 from t2 group by 产品编号,产品版本
)b on a.产品编号=b.产品编号 and a.产品版本=b.产品版本
left join
(
select 产品编号,产品版本,sum(isnull(数量3,0))as 已经出口总数量 from t3 group by 产品编号,产品版本
)c on a.产品编号=c.产品编号 and a.产品版本=c.产品版本
物料名 申请出口总数量 已经出口总数量 剩下未出口数量
---------- ----------- ----------- -----------
m1 8000 2000 6000
m2 8000 2000 6000
m3 8000 2000 6000
m5 9500 4000 5500
m6 6000 0 6000(所影响的行数为 5 行)