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
Freigeben: 2025-01-08 13:27:42
Original
459 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage