Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/12/2007, 19:51
ingcaresc
 
Fecha de Ingreso: diciembre-2007
Mensajes: 6
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Problema con SUM y HAVING

Hola RataASP, probe los scripts que pones, no se que estes usando pero yo los probe en SQLServer, y funcionan bien, excepto por la funcion "isnull" que aqui se maneja asi:
isnull(campo,valordereemplazo), tambien modifique "Having" y lo traslade al "where"
porque no puedes hacer referencia al campo "saldo", siendo que apenas lo estas formando en la consulta, amenos que hicieras una subconsulta o una vista y asi si funcionaria.

SELECT
ctacte.anoperiodo,
ctacte.mesperiodo,
socios.idsocio,
socios.apellido,
socios.nombre,
SUM(CASE WHEN IsNull(ctacte.debe,0)=0 THEN 0 ELSE ctacte.debe END) AS totaldebe,
SUM(CASE WHEN IsNull(ctacte.haber,0)=0 THEN 0 ELSE ctacte.haber END) AS totalhaber,
(SUM(CASE WHEN IsNull(ctacte.haber,0)=0 THEN 0 ELSE ctacte.haber END) - SUM(CASE WHEN IsNull(ctacte.debe,0)=0 THEN 0 ELSE ctacte.debe END)) AS saldo

FROM
ctacte RIGHT OUTER JOIN socios ON (ctacte.idsocio = socios.idsocio)

WHERE
ctacte.mesperiodo LIKE @varMesPeriodo AND ctacte.anoperiodo LIKE @varanoperiodo
and ctacte.haber-ctacte.debe < 0

GROUP BY
socios.idsocio,
socios.apellido,
socios.nombre,
ctacte.anoperiodo,
ctacte.mesperiodo

--HAVING
--saldo < 0

ORDER BY
apellido, nombre


recorsed2

SELECT
SUM(CASE WHEN IsNull(ctacte.debe,0)=0 THEN 0 ELSE ctacte.debe END) AS totaldebe,
SUM(CASE WHEN IsNull(ctacte.haber,0)=0 THEN 0 ELSE ctacte.haber END) AS totalhaber,
(SUM(CASE WHEN IsNull(ctacte.haber,0)=0 THEN 0 ELSE ctacte.haber END) - SUM(CASE WHEN IsNull(ctacte.debe,0)=0 THEN 0 ELSE ctacte.debe END)) AS saldo

FROM
ctacte RIGHT OUTER JOIN socios ON (ctacte.idsocio = socios.idsocio)

WHERE
ctacte.mesperiodo LIKE @varMesPeriodo AND ctacte.anoperiodo LIKE @varAnoPeriodo
and ctacte.haber-ctacte.debe < 0
--HAVING
--saldo < 0