que estoy tratando de devolver una lista de cuentas con sus saldos, Resultado de Ingresos yCómo sumar columnas en múltiples condiciones en un GROUP BY
Account Transaction
------- -----------
AccountID TransactionID
BankName AccountID
Locale Amount
Status
Esto es lo que tengo actualmente. ¿Alguien podría explicarme dónde me estoy equivocando?
select
a.ACCOUNT_ID,
a.BANK_NAME,
a.LOCALE,
a.STATUS,
sum(t1.AMOUNT) as BALANCE,
sum(t2.AMOUNT) as OUTCOME,
sum(t3.AMOUNT) as INCOME
from ACCOUNT a
left join TRANSACTION t1 on t1.ACCOUNT_ID = a.ACCOUNT_ID
left join TRANSACTION t2 on t2.ACCOUNT_ID = a.ACCOUNT_ID and t2.AMOUNT < 0
left join TRANSACTION t3 on t3.ACCOUNT_ID = a.ACCOUNT_ID and t3.AMOUNT > 0
group by a.ACCOUNT_ID, a.BANK_NAME, a.LOCALE, a.[STATUS]
ACTUALIZACIÓN
haya corregido los t2 dejó sintaxis de unión de acuerdo con el comentario anterior.
La salida que estoy esperando es obviamente obvia de la pregunta. Para 6 cuentas, el SQL debe devolver 6 cuentas con su Saldo, Ingresos y Resultado de esa cuenta.
¡El problema con el SQL que proporcioné fue que los números son incorrectos! Según los comentarios, creo que el problema se debe a que se unieron varias veces, lo que significa que se suman las cantidades incorrectamente.
¿No debería la unión para TRANSACTION t2 estar en t2 como en t2.ACCOUNT_ID = a.ACCOUNT_ID? {Por favor edita la pregunta. Promovido para comentar a partir de la respuesta de Neil Moss a continuación} – SAMills