Hola Carlos, gracias por tu respuesta. Quiero elaborar esto en Crystal. Permíteme explicarte mejor lo que deseo lograr:
Lo que quiero es ver el detalle de la cuenta tal como lo muestra SAP, con el Saldo Acumulado, pero las cuentas que deseo ver son de Ventas, por lo que al mismo tiempo tendría que restar las devoluciones. Esto es para poder visualizar en un gráfico el saldo acumulado por semana.
Al principio lo hice combinando 'Vtas' con 'Devoluciones' y el saldo acumulado en Ventas y Devoluciones estaba correcto. Sin embargo, luego tuve problemas para mostrarlo en el gráfico, ya que si en una semana hubo una devolución, debía restarla.
Luego intenté hacerlo con esta consulta:
SELECT Mes=DATENAME(MONTH, T0.RefDate),
Semana=DATEpart(WK, t0.refdate),
(t0.Credit-t0.Debit) AS 'CreditoC/D(ML)',
t0.credit,
t0.debit,
CASE
WHEN (isnull((SELECT T.DEBIT FROM dbo.JDT1 T WHERE T.Account in ('CtaDev1','CtaDev2') and DATEpart(WK, t.refdate) = DATEpart(WK, t0.refdate) and t.Debit=t0.Credit),0)*-1) = 0 THEN ((isnull((SELECT sum(T.Debit-T.Credit) FROM dbo.JDT1 T WHERE T.TransId < T0.TransId AND T.Account = T0.Account AND T.RefDate BETWEEN '20130101' AND '20130531' )-(T0.Credit),-T0.credit)))*-1
ELSE ((SELECT SUM(T.Debit-T.Credit) FROM dbo.JDT1 T WHERE T.TransId < T0.TransId AND T.Account = T0.Account AND T.RefDate BETWEEN '20130101' AND '20130531')+T0.Debit)*-1
END AS 'Saldo Acumulado',
'Devoluciones'=(isnull((SELECT T.DEBIT FROM dbo.JDT1 T WHERE T.Account in ('CtaDev1','CtaDev2') and DATEpart(WK, t.refdate) = DATEpart(WK, t0.refdate) and t.Debit=t0.Credit),0)*-1)
FROM JDT1 T0
INNER JOIN OACT T1 ON T1.AcctCode = T0.Account
WHERE T0.RefDate BETWEEN '20130101' AND '20130531' AND T0.account ='CtaVta'
ORDER BY t0.RefDate
Espero haberme explicado correctamente y que puedas ayudarme. Por favor, si es posible, ¿podrías explicarme cómo obtener el saldo acumulado en Crystal?
Desde ya, muchas gracias. ¡Bendiciones!