首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL:当一列有空值时求和3列?

SQL:当一列有空值时求和3列?
EN

Stack Overflow用户
提问于 2009-07-06 18:50:14
回答 9查看 213.9K关注 0票数 79
代码语言:javascript
复制
SELECT 
    sum(TotalHoursM)
          + (TotalHoursT)
          + (TotalHoursW)
          + (TotalHoursTH)
          + (TotalHoursF) 
          AS TOTAL
FROM LeaveRequest
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-07-06 18:52:06

如果该列的值为0,则没有问题,我的猜测是null值有问题,在这种情况下,您将需要使用IsNull(Column, 0)来确保它始终至少为0。

票数 114
EN

Stack Overflow用户

发布于 2009-07-06 19:12:28

前面使用ISNULL函数的答案仅适用于MS Sql Server。COALESCE函数也可以在SQL Server中使用。但是也可以在标准的SQL数据库系统中工作。在给定的示例中:

代码语言:javascript
复制
SELECT sum(COALESCE(TotalHoursM,0))
          + COALESCE(TotalHoursT,0)
          + COALESCE(TotalHoursW,0)
          + COALESCE(TotalHoursTH,0)
          + COALESCE(TotalHoursF,0) AS TOTAL FROM LeaveRequest

这与ISNULL解决方案相同,唯一的区别是函数的名称。两者都可以在SQL Server中工作,但COALESCE是ANSI标准,而ISNULL不是。而且,COALESCE更加灵活。ISNULL只能使用两个参数。如果第一个参数为空,则返回第二个参数的值,否则返回第一个参数的值。COALESCE将接受2到'n‘(我不知道’n‘的限制)参数,并返回第一个非NULL参数的值。当只有两个参数时,效果与ISNULL相同。

票数 81
EN

Stack Overflow用户

发布于 2009-07-06 18:53:10

代码语言:javascript
复制
SELECT sum(isnull(TotalHoursM,0)) 
         + isnull(TotalHoursT,0) 
         + isnull(TotalHoursW,0) 
         + isnull(TotalHoursTH,0) 
         + isnull(TotalHoursF,0))
AS TOTAL FROM LeaveRequest
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1088648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档