SQL2008,我表如下:
A表: 商品编号,期初数量
         A001,       2
B表: 商品编号,入库数量,入库时间
         A001,       2,  2013-01
        A002,      3,  2013-02
C表:商品编号, 出库数量,出库时间
         A002,       1, 2013-02我想使用视图或查询语句来现实:
 商品编号,期初数,入库数量,出库数量
    A001,     2,       2,
    A002,       ,      3,       1我现在想到的是要使用临时表来插入数值,感觉这方法不是很好。 请问我应该怎么做?谢谢!

解决方案 »

  1.   

    三表连接查询就可以了。
    declare @A表 table([商品编号] varchar(4),[期初数量] int)
    insert @A表
    select 'A001',2declare @B表 table([商品编号] varchar(5),[入库数量] varchar(2),[入库时间] varchar(7))
    insert @B表
    select 'A001','2','2013-01' union all
    select 'A002','3','2013-02'declare @C表 table([商品编号] varchar(5),[出库数量] varchar(2),[出库时间] varchar(7))
    insert @C表
    select 'A002','1','2013-02'select b.商品编号,a.期初数量,b.入库数量,c.出库数量 from @B表 b 
    LEFT JOIN @A表 a ON b.商品编号=a.商品编号
    LEFT JOIN @C表 c ON b.商品编号=c.商品编号
    /*
    商品编号  期初数量        入库数量 出库数量
    ----- ----------- ---- ----
    A001  2           2    NULL
    A002  NULL        3    1
    */
      

  2.   

    select t1.商品编号,t1.期初数量,入库数量=(select sum(入库数量) from B表 where t1.商品编号=商品编号),出库数量=(select sum(出库数量) from C表 where t1.商品编号=商品编号)
    from A表 t1--或者
    select t1.商品编号,t1.期初数量,sum(t2.入库数量) as 入库数量
    ,sum(t3.出库数量) as 出库数量
    from A表 t1 
    left join B表 t2 on t1.商品编号=t2.商品编号
    left join C表 t3 on t1.商品编号=t3.商品编号
    group by t1.商品编号,t1.期初数量