Heim >Datenbank >MySQL-Tutorial >Wie finde ich den neuesten Datensatz für jede Gruppe mit Prüfungen ungleich Null in SQL Server?

Wie finde ich den neuesten Datensatz für jede Gruppe mit Prüfungen ungleich Null in SQL Server?

Barbara Streisand
Barbara StreisandOriginal
2025-01-08 13:27:42500Durchsuche

How to Find the Most Recent Record for Each Group with Non-Zero Checks in SQL Server?

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:

abzurufen
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn