Cuentas
Id (int pk)
Info (string)
Asientos
Id (int pk)
Fecha (datetime)
AsientoCuenta
AsientoId (int pk)
CuentaId (int pk)
Importe (float)
DH (string)
Código SQL:
 Ver original
DECLARE @EmpresaId INT = 88, @Desde datetime = '01/12/2013'
SELECT c.id, C.Info,
Debe = CASE WHEN AC.DH = 'D' AND A.Fecha < @Desde THEN isnull(SUM(ac.Importe),0) ELSE NULL END,
Haber = CASE WHEN ac.DH = 'H' AND A.Fecha < @Desde THEN isnull(SUM(ac.Importe), 0) ELSE NULL END
FROM Cuentas C
LEFT JOIN AsientoCuenta AC ON C.Id = AC.CuentaId
LEFT JOIN Asientos A ON A.Id = AC.AsientoId
WHERE C.EmpresaId = @EmpresaId
GROUP BY C.Id, C.Info, AC.DH, A.Fecha
ORDER BY C.Info
 
 





