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>
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>
Voici comment y parvenir à l'aide d'une requête SQL :
Tout d'abord, nous identifions le maximum RecordDate
pour chaque GroupID
où CheckAmount
est supérieur à 0 :
<code class="language-sql">SELECT GroupID, MAX(RecordDate) AS MaxRecordDate FROM YourTable WHERE CheckAmount > 0 GROUP BY GroupID;</code>
Ensuite, nous joignons ce résultat à la table d'origine pour récupérer le 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>
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!