sqlServer中Sum函数碰到null不做了?

shuiwencai 2007-09-29 03:23:39
在SQLServer2000中测试如下:
如一表Table ,A,b,c,d字段
A字符,b,c,d为int

Select a,sum(b+c+d) as e
from Table1
group by a

如果,其中一个为NULL,则系统计算结果也为NULL,即b,c,d中一个为NULL,则sum(b+c+d) 结果为NULL
这是为何?怎么避免此问题?
...全文
677 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fa_ge 2007-09-29
  • 打赏
  • 举报
回复

遇到null時,加上 isnull(字段,0)
Limpire 2007-09-29
  • 打赏
  • 举报
回复
/*
哦,是哦!

根据a分组之后,如果某些组b、c、d其中一列或多列全是NULL,那么sum(b)+sum(c)+sum(d)是NULL。

那就用:
*/

Select a,sum(isnull(b,0)+isnull(c,0)+isnull(d,0)) as e
from Table1
group by a
shuiwencai 2007-09-29
  • 打赏
  • 举报
回复
to Limpire :
Select a,(sum(b)+sum(c)+sum(d)) as e
from Table1
group by a
这样我试过,不行,使用isnull(b,0)没有问题.
聪明的一休 2007-09-29
  • 打赏
  • 举报
回复
用isnull即可
Limpire 2007-09-29
  • 打赏
  • 举报
回复
不是SUM碰到NULL就不干了,而是碰到NULL忽略。

b+c+d,只要有一个为NULL,那么整个表达式就是NULL,SUM(b+c+d)就忽略了。

ojuju10 2007-09-29
  • 打赏
  • 举报
回复
Select a,sum(isnull(b,0)+isnull(c,0)+isnull(d,0)) as e
from Table1
group by a
Limpire 2007-09-29
  • 打赏
  • 举报
回复
--或者这样

Select a,(sum(b)+sum(c)+sum(d)) as e
from Table1
group by a
kk19840210 2007-09-29
  • 打赏
  • 举报
回复
在SQL 里NULL 与任何字符 数字 相加减都为null

Select a,sum(isnull(b,0)+isnull(c,0)+isnull(d),0) as e
from Table1
group by a
Limpire 2007-09-29
  • 打赏
  • 举报
回复
Select a,sum(isnull(b,0)+isnull(c,0)+isnull(d,0)) as e
from Table1
group by a

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧