Ich versuche, eine Liste von Konten mit ihren Guthaben, Outcome und EinkommenWie Spalten auf mehreren Bedingungen in einer Gruppe Summe durch
Account Transaction
------- -----------
AccountID TransactionID
BankName AccountID
Locale Amount
Status
Zum Rückkehren hier ist das, was ich im Moment habe. Kann mir jemand erklären, wo ich falsch liege?
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]
UPDATE
Haben Sie korrigiert die T2-Syntax gemäß dem Kommentar unten kommen gelassen.
Die Ausgabe, die ich erwarte, wird hoffentlich von der Frage offensichtlich. Für 6 Konten sollte die SQL 6 Konten mit ihrem Kontostand, Einkommen und Ergebnis dieses Kontos zurückgeben.
Das Problem mit der SQL, die ich zur Verfügung stellte, war, dass die Zahlen falsch sind! Nach den Kommentaren denke ich, das Problem ergibt sich aus dem Beitritt mehrere Male, die die Beträge falsch summiert.
Sollte der Join für TRANSACTION t2 nicht auf t2 sein wie auf t2.ACCOUNT_ID = a.ACCOUNT_ID? {Bitte bearbeiten Sie die Frage. Gefördert von Neil Moss 'Antwort unten zu kommentieren – SAMills