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

问个简略的SQL语句

2013-01-05 
问个简单的SQL语句三个表:库存表,进货表,出货表,内容如下库存表:仓库商品 库存数量出货表:出货仓库商品1

问个简单的SQL语句
三个表:库存表,进货表,出货表,内容如下

库存表:
仓库  商品 库存数量

出货表:
出货仓库  商品1 出货数量

进货表
进货仓库  商品 进货数量 

要求实现如下的查询

仓库   商品   库存   进货  出货
仓库1  商品1   100    100   0(就是出货表里没有这个商品的记录)
仓库1  商品2   100    0     20
仓库2  商品3   100    100   10
……
……


[解决办法]

其实union all你自己也写的出来吧
[解决办法]
其实和雪狼的方法一样


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商品11001000
仓库1商品2100020
仓库2商品310010010
*/
drop table 库存表
drop table 出货表
drop table 进货表

热点排行