T-SQL unter Verwendung der SUMME für die laufende Summe

Habe ich eine einfache Tabelle mit einigen dummy-Daten setup wie:

|id|user|value|
---------------
 1  John   2
 2  Ted    1
 3  John   4
 4  Ted    2

Kann ich wählen Sie eine laufende Summe durch ausführen der folgenden sql(MSSQL 2008) - Anweisung:

SELECT a.id, a.user, a.value, SUM(b.value) AS total
FROM table a INNER JOIN table b
ON a.id >= b.id
AND a.user = b.user
GROUP BY a.id, a.user, a.value
ORDER BY a.id

Das wird mir Ergebnisse wie:

|id|user|value|total|
---------------------
 1  John   2     2
 3  John   4     6
 2  Ted    1     1
 4  Ted    2     3

Nun ist es möglich, nur abrufen, die letzten Zeilen für jeden Benutzer? Also das Ergebnis wäre:

|id|user|value|total|
---------------------
 3  John   4     6
 4  Ted    2     3

Werde ich über das der richtige Weg? irgendwelche Vorschläge, oder einen neuen Pfad zu Folgen, wäre toll!

Sind Sie interessiert nur das Endergebnis, oder brauchen Sie eine laufende Summe? Speichern Sie das laufende Summe schon irgendwo, oder verwenden Sie es Nur zu generieren, die das gewünschte Ergebnis? [Ihre endgültige Ergebnis kann effektiv erstellt, ohne eine laufende Summe. Aber, wenn Sie bereits über die laufende Summe irgendwo gespeichert, aus anderen Gründen, kann es sicher verwendet werden.]
Sie swithced Ihre Antwort akzeptiert, um die Leistung zu verbessern, aber Sie haben nicht geantwortet auf meine Anfrage oben. Bitte beachten Sie, dass Sie können die Leistung verbessern, indem nicht über das laufende Summe-Methode. Wäre das für Sie von Interesse sein oder benötigen Sie alle Ergebnisse in die laufende Summe auch?
Hi Dems, ich war fleißig an der Arbeit und verpasst Ihren Kommentar. Ich bin nur nach der Summe und der dazugehörige user, also ja, ich interessiere mich für eine verbesserte Leistung.
Siehe t-clausen.dk Antwort.

InformationsquelleAutor luke2012 | 2012-08-16

Schreibe einen Kommentar