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.期初数量