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
求:下表,
  物料名,申请出口总数量,已经出口总数量,剩下未出口数量

解决方案 »

  1.   

    select a.物料名,a.申请出口总数量,isnull(b.已经出口总数量,0) as 已经出口总数量,
       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.物料名
      

  2.   

    select a.物料名,b.申请出口总数量,c.已经出口总数量,(b.申请出口总数量-c.已经出口总数量)as 剩下未出口数量 from t a
    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 行)
      

  3.   

    select a.物料名,isnull(b.申请出口总数量,0)as 申请出口总数量,isnull(c.已经出口总数量,0)as 已经出口总数量,(isnull(b.申请出口总数量,0)-isnull(c.已经出口总数量,0))as 剩下未出口数量 from t a
    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 行)