Mat*_*hew 3 sql sql-server-2008
我使用CTE来计算日志中的时间跨度,如下所示:
http://www.sqlfiddle.com/#!3/b99448/6
请注意,其中一行具有NULL值,因为这是最新的日志条目,无法进行计算.
但是,如果我将SUM这些结果NULL视为零:
http://www.sqlfiddle.com/#!3/b99448/4
如何让它停止忽略NULL值?我希望总和是NULL因为它正在增加一个NULL值.
聚合函数忽略NULL值.他们不被视为0-的区别是更重要的AVG(),MIN()和MAX().因此,SUM()仅NULL在所有值都返回时返回NULL.
如果你想NULL回来,这是一个简单的表达式:
select (case when count(*) = count(a.DateTimeChangedUtc) and
count(*) = count(b.DateTimeChangedUTC)
then SUM(DATEDIFF(SECOND, a.DateTimeChangedUtc, b.DateTimeChangedUTC))
end) AS TimeSpentSeconds
Run Code Online (Sandbox Code Playgroud)
NULL如果任何一个参数都返回,则返回NULL.