Calcul des différences de date entre les enregistrements séquentiels dans les bases de données Access à l'aide de SQL
L'analyse des données temporelles implique souvent de déterminer le temps écoulé entre les entrées successives. Cet article montre comment calculer les différences de date entre des enregistrements consécutifs partageant le même numéro de compte dans une base de données Access à l'aide de SQL.
Méthode 1 :
La requête SQL suivante calcule la différence de date pour les enregistrements consécutifs associés au numéro de compte 1001 :
SELECT T1.ID, T1.AccountNumber, T1.Date, MIN(T2.Date) AS NextDate, DATEDIFF("D", T1.Date, MIN(T2.Date)) AS DaysDifference FROM YourTable AS T1 LEFT JOIN YourTable AS T2 ON T1.AccountNumber = T2.AccountNumber AND T2.Date > T1.Date GROUP BY T1.ID, T1.AccountNumber, T1.Date;
Cette approche utilise un LEFT JOIN
pour identifier la date ultérieure pour chaque enregistrement, puis utilise la fonction DATEDIFF
pour calculer la différence en jours.
Méthode 2 :
Alternativement, cette requête donne le même résultat :
SELECT ID, AccountNumber, Date, NextDate, DATEDIFF("D", Date, NextDate) AS DaysDifference FROM ( SELECT ID, AccountNumber, Date, ( SELECT MIN(Date) FROM YourTable AS T2 WHERE T2.AccountNumber = T1.AccountNumber AND T2.Date > T1.Date ) AS NextDate FROM YourTable AS T1 ) AS T;
Cette méthode utilise une sous-requête pour trouver la date suivante pour chaque enregistrement avant de calculer la différence de date.
Exemple de sortie (numéro de compte 1001) :
Les deux requêtes produisent un ensemble de résultats similaire :
AccountNumber | Date | DaysDifference |
---|---|---|
1001 | 10/9/2011 | 2 |
1001 | 12/9/2011 | 8 |
1001 | 20/9/2011 | NULL |
La valeur NULL
indique qu'il n'y a pas d'enregistrement ultérieur pour la dernière entrée. N'oubliez pas de remplacer "YourTable"
par le nom réel de votre table.
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!