Ich versuche gerade, eine ziemlich komplexe Abfrage in SQL Server 2008 zu erstellen. Ich würde gerne einige Beiträge von SQL-Experten hier.
Stellen Sie sich vor, ich hätte eine Tabelle "Zahlungen" mit diesen Feldern:
PaymentID int, CustomerID int, PaymentDate datetime, Betrag dezimal
Es handelt sich also im Wesentlichen um eine Tabelle der Zahlungen, die ein Kunde zu bestimmten Daten geleistet hat. Wichtig ist, dass ein Zahlungsbetrag in einigen Fällen ein negativer Wert sein kann. Im Laufe der Zeit kann der Gesamtbetrag, der von einem bestimmten Kunden gezahlt wurde, also steigen oder fallen.
Was wir herauszufinden versuchen, ist die SQL, um den Höchststand des Gesamtbetrags, der pro Kunde gezahlt wurde, zu berechnen.
Wenn Fred also 3 Zahlungen getätigt hat: die erste für $5, die zweite für $5, die dritte für -$3, dann zeigt der Bericht, dass Freds höchster gezahlter Gesamtbetrag $10 war (bei seiner zweiten Zahlung) und sein letzter gezahlter Betrag $7 war.
Wir müssen diesen Bericht für hunderttausend Kunden erstellen (von denen jeder hundert bis tausend Zahlungen getätigt haben kann), also muss es schnell gehen.
Gibt es eine gute Möglichkeit, diese Abfrage zu strukturieren, ohne die laufenden Summen in der Datenbank zu speichern? Wir möchten die Speicherung von vorberechneten Werten nach Möglichkeit vermeiden.