SQL 查询 记录或某个字段为空的情景 nvl

如一张表定义如下:

create table Score(

id char(24),

english number(3,1);

math number(3,1);

);

 

里面的记录如下:

1    89    null

2    null   90

 

想要查询全部学生的英语成绩,sql语句如下

select sum(nvl(english,0))

from Score;

 

现在如果有另外一个Score1表,他的定义和Score一样,

里面的数据为:

1    null    90

3   90     null  

要查询这两个表里id为1的英语成绩之和

Sql:

select sum(nvl(a.english,0))+sum()

from Score a ,Score b

where a.id='1' and b.id='1';

这样写,是用相当大的问题,不一定会有正确的结果。

 

能有正确的结果的sql是:

 

select (

select sum(nvl(english,0))

from Score where id=1

)

+

(

select sum(nvl(english,0))

from Score1 where id=1

)

from dual;

 

但是这样还有个问题,如果查的id为2,Score1中没有这条记录,所以

(

select sum(nvl(english,0))

from Score1 where id=2

)

返回的还是空,应该在外面在添加nvl,把它转化为0。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值