Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Rekod Terkini untuk Setiap Kumpulan dengan Pemeriksaan Bukan Sifar dalam Pelayan SQL?

Bagaimana untuk Mencari Rekod Terkini untuk Setiap Kumpulan dengan Pemeriksaan Bukan Sifar dalam Pelayan SQL?

Barbara Streisand
Barbara Streisandasal
2025-01-08 13:27:42501semak imbas

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

Mengambil Rekod Terkini dengan Cekap dengan Nilai Semak Bukan Sifar dalam Pelayan SQL

Artikel ini menunjukkan cara untuk mendapatkan semula rekod terkini untuk setiap kumpulan dalam jadual SQL Server, khususnya memfokuskan pada rekod yang nilai lajur 'semak' lebih besar daripada sifar. Mari kita pertimbangkan jadual sampel dengan struktur berikut:

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

Matlamat kami adalah untuk mendapatkan set keputusan berikut:

<code>| GroupID | RecordDate | CheckAmount |
|---|---|---|
| 2 | 2013-01-01 | 800 |
| 1 | 2013-01-03 | 700 |
| 3 | 2013-01-05 | 200 |</code>

Berikut ialah cara untuk mencapai ini menggunakan pertanyaan SQL:

Pertama, kami mengenal pasti RecordDate maksimum bagi setiap GroupID dengan CheckAmount lebih besar daripada 0:

<code class="language-sql">SELECT GroupID, MAX(RecordDate) AS MaxRecordDate
FROM YourTable
WHERE CheckAmount > 0
GROUP BY GroupID;</code>

Kemudian, kami menyambungkan hasil ini kembali ke jadual asal untuk mendapatkan semula CheckAmount yang sepadan:

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

Pertanyaan ini menapis dengan cekap amaun cek bukan sifar dan hanya memilih rekod terkini untuk setiap kumpulan. Ingat untuk menggantikan YourTable dengan nama sebenar jadual anda. Menggunakan nama lajur deskriptif (seperti GroupID dan CheckAmount) amat disyorkan untuk kebolehbacaan dan kebolehselenggaraan kod yang lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Rekod Terkini untuk Setiap Kumpulan dengan Pemeriksaan Bukan Sifar dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn