Ich habe eine Reihe von Tabellen, aus denen ich z. B. eine Ansicht erstellen möchte:
Mitglied
ID ¦ Name
---¦------
1 ¦ John
Transaktion
ID¦ MemberID
--¦-----------
1 ¦ 1
TransaktionsTeil
ID ¦ TransactionID ¦ SchemeID ¦ Value
---¦---------------¦----------¦-------
1 ¦ 1 ¦ 1 ¦ 150
2 ¦ 1 ¦ 2 ¦ 50
Schema
ID ¦ EmailAddress
---¦--------------
1 ¦ x@x.com
2 ¦ y@y.com
Eine typische Zeile in der Ansicht würde den Namen des Mitglieds, den Gesamtwert einer Transaktion und JEDE E-Mail-Adresse eines der Systeme enthalten, auf die sich die Transaktionsteile beziehen.
Zum Beispiel:
Name ¦ TotalValue ¦ Email Address
-----¦------------¦---------------
John ¦ 200 ¦ x@x.com
Ich kam mit dieser Anweisung unten, aber es gibt 2 separate Zeilen, wenn die e-Mail-Adressen unterscheiden.
SELECT
m.Name as Name, SUM(tp.Value) as TotalValue, s.EmailAddress as EmailAddress
FROM
Member m INNER JOIN
Transaction t ON m.ID = t.MemberID INNER JOIN
TransactionPart tp ON tp.TransactionID = t.ID INNER JOIN
Scheme s ON s.ID = tp.SchemeID
GROUP BY
m.Name, s.EmailAddress
Ergebnis:
Name ¦ TotalValue ¦ Email Address
-----¦------------¦---------------
John ¦ 150 ¦ x@x.com
John ¦ 50 ¦ y@y.com
Wie kann ich eine einzelne Zeile zurückgeben, die eine der E-Mail-Adressen (möglicherweise nur die erste gefundene) mit dem aggregierten Wert insgesamt enthält? Ist dies anhand der gezeigten Beispiele möglich?
Vielen Dank im Voraus für alle Kommentare / Antworten!