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

实在想不出来了,求一sql语句,该如何处理

2012-01-28 
实在想不出来了,求一sql语句a入库表名称入库数量文件夹100笔100纸200b出库表名称出库数量文件夹50笔100想

实在想不出来了,求一sql语句
a入库表
名称           入库数量
文件夹       100
笔100
纸200

b出库表
名称           出库数量
文件夹       50
笔100

想得到如下结果
库存信息
名称           入库数量     出库数量   库存数量
文件夹       100               50               50
笔100               100             0
纸200               0                 200

或者如下结果
名称           库存数量
文件夹       50
笔0
纸200

请高人指点!谢谢先



[解决办法]
select a.名称,入库数量,isnull(出库数量,0) as 出库数量,
库存数量=入库数量-isnull(出库数量,0)
from a
left join b
on a.名称=b.名称
[解决办法]
select 名称,sum(入库数量) as 入库数量,sum(出库数量) as 出库数量,sum(库存数量) as 库存数量
from (
select 名称,入库数量,cast(0 as int) as 出库数量,入库数量 as 库存数量 from a入库表
union all
select 名称,0 as 入库数量,出库数量,-出库数量 as 库存数量 from b出库表
) as t
group by 名称


[解决办法]
Select
A.名称,
A.入库数量,
IsNull(B.出库数量, 0) As 出库数量,
A.入库数量 - IsNull(B.出库数量, 0) As 库存数量
From
A
Left Join
B
On A.名称 = B.名称
[解决办法]
create table 入库表(名称 varchar(20),入库数量 int)
insert into 入库表 select '文件夹 ',100
insert into 入库表 select '笔 ',100
insert into 入库表 select '纸 ',200

create table 出库表(名称 varchar(20),出库数量 int)
insert into 出库表 select '文件夹 ',50
insert into 出库表 select '笔 ',100
go

select
isnull(a.名称,b.名称) as 名称,
isnull(a.入库数量,0) as 入库数量,
isnull(b.出库数量,0) as 出库数量,
isnull(a.入库数量,0)-isnull(b.出库数量,0) as 库存数量
from
(select 名称,sum(入库数量) as 入库数量 from 入库表 group by 名称) a
full outer join
(select 名称,sum(出库数量) as 出库数量 from 出库表 group by 名称) b
on
a.名称=b.名称
go

/*
名称 入库数量 出库数量 库存数量
-------------------- ----------- ----------- -----------
笔 100 100 0
文件夹 100 50 50
纸 200 0 200
*/

drop table 入库表,出库表
go
[解决办法]
--建立测试环境
create table 入库表(名称 varchar(10),入库数量 int)
insert 入库表(名称,入库数量)
select '文件夹 ', '100 ' union all
select '笔 ', '100 ' union all
select '纸 ', '200 '
go
create table 出库表 (名称 varchar(10),出库数量 int)
insert 出库表 (名称,出库数量)
select '文件夹 ', '50 ' union all
select '笔 ', '100 '
go
--执行测试语句
select a.名称 as 名称,isnull(a.入库数量,0) as 入库数量
,isnull(b.出库数量,0) as 出库数量,isnull(a.入库数量,0)-isnull(b.出库数量,0) as 库存数量
from(select 名称,sum(入库数量) as 入库数量 from 入库表 group by 名称) a
full join(select 名称,sum(出库数量) as 出库数量 from 出库表 group by 名称) b on a.名称=b.名称
go

go
--删除测试环境
drop table 入库表,出库表
go
/*--测试结果
名称 入库数量 出库数量 库存数量
---------- ----------- ----------- -----------


笔 100 100 0
文件夹 100 50 50
纸 200 0 200

(3 row(s) affected)
*/

热点排行