有三张表如下:
     表A                  表B                   表C
月份 产品 数量A      月份 产品 数量B       月份 产品 数量C
1    a    2          1    a    1           1    a    1 
1    b    2          1    b    2           3    a    1
1    c    3          1    c    3
2    a    2          2    a    2
2    c    3          2    b    3
3    b    5          2    c    3
3    c    6
现在将其合并为一张表D如下:其中数量D为数量A-数量B-数量C
              表D
月份 产品 数量A 数量B 数量C 数量D
1    a    2     1     1     0
1    b    2     2           0
1    c    3     3           0
2    a    2     2           0
2    b          3           -3
2    c    3     3           0
3    a                1     -1
3    b    5                 5
3    c    6                 6
请问用SQL语句如何来实现?谢谢了!

解决方案 »

  1.   

    用左连接,手头没有环境,随手写的,你试试看有什么问题没select a.月份, a.产品, a.数量A,b.数量B ,c.数量C,( a.数量A-b.数量B-c.数量C) as 数量D  from  表A  a 
    left join
    ( select 月份 产品 数量B from  表B) b
    on a.月份=b.月份 and a.产品=b产品
    left join
    ( select 月份 产品 数量C from  表C) c
    on a.月份=c.月份 and a.产品=c.产品
      

  2.   

    现在如果在表B中增加一个字段数量B2,合并后在表D 中也增加一个字段数量D2,
    且数量D2=数量A-数量B2,又该怎么实现呢?
      

  3.   

    select a.月份, a.产品, a.数量A,b.数量B ,b.数量B2,c.数量C,( a.数量A-b.数量B-c.数量C) as 数量D,(a.数量A-b.数量B2) as 数量D2  from  表A  a 
    left join
    ( select 月份 产品 数量B,数量B2 from  表B) b
    on a.月份=b.月份 and a.产品=b产品
    left join
    ( select 月份 产品 数量C from  表C) c
    on a.月份=c.月份 and a.产品=c.产品