在SUM列上过滤SQL组

时间:2014-05-05 13:40:46

标签: sql sql-server

我想使用这种SQL语法。但是我在nSaldo专栏上收到了这个错误:

SELECT [d_tipo1]
     , [d_tipo]
     , [d_numero]
     , [d_dfecha]
     , sum(dvalor) as nsaldo 
     , [nit]
     , [cuenta]
     , [codcli] 
  FROM [dbcrcar] 
 WHERE (nsaldo>0)  
 GROUP BY 
       nit
     , codcli
     , cuenta 
     , d_tipo1
     , d_tipo
     , d_numero
     , d_dfecha  
 ORDER BY 
       [d_dfecha]

我想只显示符合条件nsaldo> 0的寄存器

由于

1 个答案:

答案 0 :(得分:3)

过滤 汇总值 时,您应该使用HAVING,而不是WHERE

  SELECT [d_tipo1], 
         [d_tipo], 
         [d_numero], 
         [d_dfecha], 
         Sum(dvalor) as nsaldo, 
         [nit], 
         [cuenta], 
         [codcli] 
    FROM [dbcrcar] 
GROUP BY nit, 
         codcli, 
         cuenta,
         d_tipo1,
         d_tipo,
         d_numero,
         d_dfecha 
  HAVING (Sum(dvalor) > 0) -- Use HAVING with aggregated values, not WHERE
ORDER BY [d_dfecha]