日期:2014-05-17  浏览次数:20577 次

SQL 应用求助
SQL2008,我表如下:
A表: 商品编号,期初数量
         A001,       2
B表: 商品编号,入库数量,入库时间
         A001,       2,  2013-01
        A002,      3,  2013-02
C表:商品编号, 出库数量,出库时间
         A002,       1, 2013-02

我想使用视图或查询语句来现实:
 商品编号,期初数,入库数量,出库数量
    A001,     2,       2,
    A002,       ,      3,       1

我现在想到的是要使用临时表来插入数值,感觉这方法不是很好。 请问我应该怎么做?谢谢!

------解决方案--------------------
三表连接查询就可以了。


declare @A表 table([商品编号] varchar(4),[期初数量] int)
insert @A表
select 'A001',2

declare @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
*/

------解决方案--------------------
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.期初数量