您的位置:首页 > 数据库

要求用一句sql语句打印出A,B各剩了多少

2007-09-04 13:56 323 查看
表1(货物总数)
类型  总数
 A    900
 B    1000

 

表2(使用了的货物)
 类型  使用数
  A      20
  B      60
  A      11

现在要求用一句sql语句打印出A,B各剩了多少

 
 

--光full join,还不够,需要用isnull()函数,否则,都是空

--如:

 

--创建测试表T1
create table T1 (类型 varchar(100), 总数 int)

--追加测试数据
insert into T1 select 'A',    900
insert into T1 select 'B',    1000
insert into T1 select 'C',    1000

--创建测试表T2
create table T2 (类型 varchar(100), 使用数 int)

--追加测试数据
insert into T2 select 'A',      20
insert into T2 select 'B',      60
insert into T2 select 'A',      11

--你要的SQL语句
select 类型,sum(数量) as 剩余数量
from
    (
     select 类型,总数 as 数量
     from T1
     union all
     select 类型,使用数*(-1) as 数量
     from T2
    ) as t
group by 类型

select a.类型,(isnull(a.总数,0)-isnull(b.使用数,0)) as [剩余数量]
from T1 a
    full join (select  类型,sum(使用数)使用数 from T2 group by 类型)b
on a.类型=b.类型

 

--删除测试表
drop table T1,T2

/*

--结果

类型     剩余数量
A       869
B       940

*/

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql insert 测试 table join c