SELECT
sum(TotalHoursM)
+ (TotalHoursT)
+ (TotalHoursW)
+ (TotalHoursTH)
+ (TotalHoursF)
AS TOTAL
FROM LeaveRequest
发布于 2009-07-06 18:52:06
如果该列的值为0,则没有问题,我的猜测是null值有问题,在这种情况下,您将需要使用IsNull(Column, 0)
来确保它始终至少为0。
发布于 2009-07-06 19:12:28
前面使用ISNULL
函数的答案仅适用于MS Sql Server。COALESCE
函数也可以在SQL Server中使用。但是也可以在标准的SQL数据库系统中工作。在给定的示例中:
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
相同。
发布于 2009-07-06 18:53:10
SELECT sum(isnull(TotalHoursM,0))
+ isnull(TotalHoursT,0)
+ isnull(TotalHoursW,0)
+ isnull(TotalHoursTH,0)
+ isnull(TotalHoursF,0))
AS TOTAL FROM LeaveRequest
https://stackoverflow.com/questions/1088648
复制相似问题