2 Stimmen

Wie gebe ich den ersten Wert bei verbundenen Tabellen mit aggregierten Spalten zurück?

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!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X