首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 应用

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

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

热点排行