
Berechnen von Unterschieden zwischen aufeinanderfolgenden Zeilen in SQL Server 2005
Diese Anleitung zeigt, wie Sie die Differenz zwischen aufeinanderfolgenden Zeilenwerten innerhalb einer SQL Server 2005-Tabelle berechnen. Die Lösung nutzt einen Self-Join, um diese Berechnung effizient durchzuführen.
Hier ist die SQL-Abfrage:
<code class="language-sql">SELECT
c.rowInt,
c.Value,
ISNULL(n.Value, 0) - c.Value AS Diff
FROM
sourceTable AS c
LEFT JOIN
sourceTable AS n
ON n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt)</code>Diese Abfrage führt eine Linksverknüpfung des sourceTable (Alias als c für „aktuell“) mit sich selbst (Alias als n für „nächste“) durch. Die Join-Bedingung n.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > c.rowInt) findet die nächste Zeile basierend auf der Spalte rowInt und stellt so die richtige Reihenfolge sicher. ISNULL(n.Value, 0) behandelt Fälle, in denen es keine nächste Zeile gibt, und verhindert so Fehler. Die Differenz wird als n.Value - c.Value berechnet und mit dem Alias Diff versehen.
Beispiel:
Betrachten Sie dieses Beispiel sourceTable:
| rowInt | Value |
|---|---|
| 2 | 23 |
| 3 | 45 |
| 9 | 0 |
| 17 | 10 |
Die Ausgabe der Abfrage wäre:
| rowInt | Value | Diff |
|---|---|---|
| 2 | 23 | 22 |
| 3 | 45 | -45 |
| 9 | 0 | 10 |
| 17 | 10 | 0 |
Die Spalte Diff zeigt die Differenz zwischen dem Value der aktuellen Zeile und dem Value der nächsten Zeile. Beachten Sie, dass die Differenz der letzten Zeile 0 beträgt, da es keine nachfolgende Zeile gibt.
Das obige ist der detaillierte Inhalt vonWie berechnet man die Differenz zwischen aufeinanderfolgenden Zeilenwerten in SQL Server 2005?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!