读书人

sqlserver减法: int部类减去null类型

发布时间: 2013-01-28 11:49:56 作者: rapoo

sqlserver减法: int类型减去null类型等于null类型?
大家好。
请问一个问题:
如下有三张表,第三张表示根据前两张表求出每个人的收入和余额,现在我的问题是王五因为没有支出,因为在表一相当于是null,
我写SQL的思路是按照姓名将表一减去表二就是余额,但是现在的结果是表三中王五的余额为null,我认为是因为
int 类型减去 null类型后也变成null类型,
请问正确的方式怎样写sql语句。

表一:
姓名 支出
李四-1000
张山-2000

表二:
姓名 收入
张山5000
李四1000
王五1000

表三:
姓名 总存款 余额
张山50003000
李四10000
王五1000NULL
[解决办法]

create table t1(姓名 nvarchar(10),支出 int)
insert into t1 select '李四',-1000
insert into t1 select '张山',-2000
create table t2(姓名 nvarchar(10),收入 int)
insert into t2 select '张山', 5000
insert into t2 select '李四', 1000
insert into t2 select '王五', 1000
go
select a.姓名,sum(isnull(c.收入,0)) as 总存款,sum(isnull(c.收入,0))+sum(isnull(b.支出,0)) as 余额
from
(select distinct 姓名 from(
select 姓名 from t1
union
select 姓名 from t2
)t
)a left join t1 b on a.姓名=b.姓名
left join t2 c on a.姓名=c.姓名
group by a.姓名
/*
姓名 总存款 余额
---------- ----------- -----------
李四 1000 0
王五 1000 1000
张山 5000 3000

(3 行受影响)
*/
go
drop table t1,t2

读书人网 >SQL Server

热点推荐