Effizientes Abrufen der neuesten Datensätze mit Prüfwerten ungleich Null in SQL Server
In diesem Artikel wird gezeigt, wie der aktuellste Datensatz für jede Gruppe in einer SQL Server-Tabelle abgerufen wird, wobei der Schwerpunkt insbesondere auf Datensätzen liegt, bei denen der Spaltenwert „Prüfungen“ größer als Null ist. Betrachten wir eine Beispieltabelle mit der folgenden Struktur:
<code>| GroupID | RecordDate | CashAmount | CheckAmount | |---|---|---|---| | 1 | 2013-01-01 | 0 | 0 | | 2 | 2013-01-01 | 0 | 800 | | 1 | 2013-01-03 | 0 | 700 | | 3 | 2013-01-01 | 0 | 600 | | 1 | 2013-01-02 | 0 | 400 | | 3 | 2013-01-05 | 0 | 200 |</code>
Unser Ziel ist es, die folgende Ergebnismenge zu erhalten:
<code>| GroupID | RecordDate | CheckAmount | |---|---|---| | 2 | 2013-01-01 | 800 | | 1 | 2013-01-03 | 700 | | 3 | 2013-01-05 | 200 |</code>
So erreichen Sie dies mit einer SQL-Abfrage:
Zuerst identifizieren wir das Maximum RecordDate
für jedes GroupID
, bei dem CheckAmount
größer als 0 ist:
<code class="language-sql">SELECT GroupID, MAX(RecordDate) AS MaxRecordDate FROM YourTable WHERE CheckAmount > 0 GROUP BY GroupID;</code>
Dann fügen wir dieses Ergebnis wieder der ursprünglichen Tabelle hinzu, um das entsprechende CheckAmount
:
<code class="language-sql">SELECT yt.GroupID, yt.RecordDate, yt.CheckAmount FROM YourTable yt INNER JOIN ( SELECT GroupID, MAX(RecordDate) AS MaxRecordDate FROM YourTable WHERE CheckAmount > 0 GROUP BY GroupID ) AS MaxDates ON yt.GroupID = MaxDates.GroupID AND yt.RecordDate = MaxDates.MaxRecordDate;</code>
Diese Abfrage filtert effizient nach Scheckbeträgen ungleich Null und wählt nur den neuesten Datensatz für jede Gruppe aus. Denken Sie daran, YourTable
durch den tatsächlichen Namen Ihrer Tabelle zu ersetzen. Die Verwendung beschreibender Spaltennamen (wie GroupID
und CheckAmount
) wird dringend empfohlen, um die Lesbarkeit und Wartbarkeit des Codes zu verbessern.
Das obige ist der detaillierte Inhalt vonWie finde ich den neuesten Datensatz für jede Gruppe mit Prüfungen ungleich Null in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!