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