Maison > base de données > tutoriel mysql > Comment calculer les différences de date entre des enregistrements consécutifs dans une base de données Access à l'aide de SQL ?

Comment calculer les différences de date entre des enregistrements consécutifs dans une base de données Access à l'aide de SQL ?

Barbara Streisand
Libérer: 2025-01-08 08:17:41
original
1013 Les gens l'ont consulté

How to Calculate Date Differences Between Consecutive Records in an Access Database Using SQL?

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

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

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!

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