【问题标题】:SQL SELECT SUM of columns is returning incorrect values列的 SQL SELECT SUM 返回不正确的值
【发布时间】:2018-01-10 15:25:04
【问题描述】:

我正在使用 SQL 选择,部分查询在下面

    SELECT coalesce(C2.PRE,0) as PRE,coalesce(C4.PREX,0) as PREX,
            coalesce(C2.AFTER,0) as AFTER,  coalesce(C4.AFTERX,0) as AFTERX

它返回 4 列

    1   0   0   0

我尝试在 SQL SELECT 中再添加 3 列,这 3 列是根据上述列找到一些 SUM 值

    PRESUM =(PRE+PREX) = 1+0=1
    AFTERSUM =(AFTER+AFTERX) =0+0=0
    TOTAL =PRESUM+AFTERSUM)= 1+0=1

The new SQL is  

    SELECT coalesce(C2.PRE,0) as PRE, coalesce(C4.PREX,0) as PREX,
          coalesce(C2.AFTER,0) as AFTER,  coalesce(C4.AFTERX,0) as AFTERX,  
           coalesce((PRE+PREX),0) as PRESUM
           coalesce((AFTER+AFTERX),0) as AFTERSUM
           coalesce((PRESUM+AFTERSUM),0) as TOTAL

返回结果是

    1   0   0   0   0   0   0 , 

但最后 3 列 [PRESUM,AFTERSUM,TOTAL] 应返回 1 0 0。我计算总和的方式有任何问题

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    在进行算术运算时,NULL 会产生 NULL 值。所以,你可能想要这个:

    SELECT coalesce(C2.PRE,0) as PRE,coalesce(C4.PREX,0) as PREX,
           coalesce(C2.AFTER,0) as AFTER, coalesce(C4.AFTERX,0) as AFTERX,
           ( coalesce(PRE, 0) + coalesce(PREX, 0) ) as PRESUM,
           ( coalesce(AFTER, 0) + coalesce(AFTERX, 0) ) as AFTERSUM,
           ( coalesce(PRESUM, 0) + coalesce(AFTERSUM, 0) ) as TOTAL
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 2021-07-25
      • 2015-07-17
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多