日期:2014-05-17 浏览次数:20597 次
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 仓库,商品
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 进货表