Maison > base de données > tutoriel mysql > Comment trouver l'enregistrement le plus récent pour chaque groupe avec des vérifications non nulles dans SQL Server ?

Comment trouver l'enregistrement le plus récent pour chaque groupe avec des vérifications non nulles dans SQL Server ?

Barbara Streisand
Libérer: 2025-01-08 13:27:42
original
464 Les gens l'ont consulté

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

Récupération efficace des derniers enregistrements avec des valeurs de contrôle non nulles dans SQL Server

Cet article montre comment récupérer l'enregistrement le plus récent pour chaque groupe dans une table SQL Server, en se concentrant spécifiquement sur les enregistrements pour lesquels la valeur de la colonne « vérifications » est supérieure à zéro. Considérons un exemple de tableau avec la structure suivante :

<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>
Copier après la connexion

Notre objectif est d'obtenir l'ensemble de résultats suivant :

<code>| GroupID | RecordDate | CheckAmount |
|---|---|---|
| 2 | 2013-01-01 | 800 |
| 1 | 2013-01-03 | 700 |
| 3 | 2013-01-05 | 200 |</code>
Copier après la connexion

Voici comment y parvenir à l'aide d'une requête SQL :

Tout d'abord, nous identifions le maximum RecordDate pour chaque GroupIDCheckAmount est supérieur à 0 :

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

Ensuite, nous joignons ce résultat à la table d'origine pour récupérer le CheckAmount:

correspondant
<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>
Copier après la connexion

Cette requête filtre efficacement les montants de chèques non nuls et sélectionne uniquement l'enregistrement le plus récent pour chaque groupe. N'oubliez pas de remplacer YourTable par le nom réel de votre table. L'utilisation de noms de colonnes descriptifs (comme GroupID et CheckAmount) est fortement recommandée pour une meilleure lisibilité et maintenabilité du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal