SELECT
sum(TotalHoursM)
+ (TotalHoursT)
+ (TotalHoursW)
+ (TotalHoursTH)
+ (TotalHoursF)
AS TOTAL
FROM LeaveRequest
Run Code Online (Sandbox Code Playgroud)
Mit*_*ers 95
如果列的值为0,那么你很好,我的猜测是你有一个Null值的问题,在这种情况下你需要使用IsNull(Column, 0)它来确保它始终为0.
Jim*_*eri 65
使用该ISNULL功能的先前答案是正确的.该COALESCE功能也将起作用.在给定的示例中:
SELECT sum(COALESCE(TotalHoursM,0))
+ COALESCE(TotalHoursT,0)
+ COALESCE(TotalHoursW,0)
+ COALESCE(TotalHoursTH,0)
+ COALESCE(TotalHoursF,0) AS TOTAL FROM LeaveRequest
Run Code Online (Sandbox Code Playgroud)
这与ISNULL解决方案完全相同,唯一的区别是函数的名称.在SQL世界中存在一些"更好"的分歧.但两者都有效.我提交这个替代方案有两个原因.这COALESCE是ANSI标准,ISNULL而不是.但更重要的COALESCE是更灵活的事实.
ISNULL只能使用两个参数.如果第一个参数为NULL,则返回第二个参数的值,否则返回第一个参数的值.COALESCE将取2到'n'(我不知道'n'的限制)参数并返回第一个参数的值NULL.当只有两个参数时效果相同ISNULL.
gju*_*ras 15
SELECT sum(isnull(TotalHoursM,0))
+ isnull(TotalHoursT,0)
+ isnull(TotalHoursW,0)
+ isnull(TotalHoursTH,0)
+ isnull(TotalHoursF,0)
AS TOTAL FROM LeaveRequest
Run Code Online (Sandbox Code Playgroud)