日期:2014-05-17 浏览次数:20507 次
if OBJECT_ID('库存表') is not null drop table 库存表
create table 库存表(仓库 nvarchar(50),商品 nvarchar(50),库存数量 int)
insert into 库存表
select '仓库1','商品1',100 union all
select '仓库1','商品2',100 union all
select '仓库2','商品3',100
if OBJECT_ID('出货表') is not null drop table 出货表
create table 出货表(出货仓库 nvarchar(50),商品 nvarchar(50),出货数量 int)
insert into 出货表
select '仓库1','商品2',20 union all
select '仓库2','商品3',10
if OBJECT_ID('进货表') is not null drop table 进货表
create table 进货表(进货仓库 nvarchar(50),商品 nvarchar(50),进货数量 int)
insert into 进货表
select '仓库1','商品1',100 union all
select '仓库2','商品3',100
;with T as(
select 仓库,商品,库存数量,0 进货数量,0 出货数量 from 库存表
union all
select 进货仓库,商品,0 库存数量,进货数量,0 出货数量 from 进货表
union all
select 出货仓库,商品,0 库存数量,0 进货数量,出货数量 from 出货表
)
select 仓库,商品,sum(库存数量) as 库存,sum(进货数量) 进货,sum(出货数量) as 出货
from T group by 仓库,商品
/*
仓库 商品 库存 进货 出货
----- ----- ---- ----- ------
仓库1 商品1 100 100 0
仓库1 商品2 100 0 20
仓库2 商品3 100 100 10
*/
drop table 库存表
drop table 出货表
drop table 进货表
select 仓库,商品,sum(库存数量) as 库存,sum(进货数量) 进货,sum(出货数量) as 出货
from (select 仓库,商品,库存数量,0 进货数量,0 出货数量 from 库存表 union all
select 进货仓库,商品1,0 库存数量,进货数量,0 出货数量 from 进货表
union all
select 出货仓库,商品,0 库存数量,0 进货数量,出货数量 from 出货表
) as a
group by 仓库,商品