ホームページ >データベース >mysql チュートリアル >Microsoft Access で連続する行間の日付の差を計算する方法

Microsoft Access で連続する行間の日付の差を計算する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-08 08:21:40504ブラウズ

How to Calculate the Date Difference Between Consecutive Rows in Microsoft Access?

Microsoft Access でのアカウント トランザクション間の経過時間を確認する

多くのデータセットは、連続した行でアカウントのトランザクションを追跡します。 これらのトランザクション間の時間を分析するには、多くの場合、日付の差を計算する必要があります。これは、Microsoft Access 内の SQL クエリを使用して簡単に実現できます。 これを達成するための 2 つの方法を見てみましょう:

方法 1: MIN() と DATEDIFF() を使用した自己結合

このアプローチでは、自己結合を使用して、同じアカウントの各行と後続の行を比較します。

<code class="language-sql">SELECT  T1.ID, 
        T1.AccountNumber, 
        T1.Date, 
        MIN(T2.Date) AS NextDate, 
        DATEDIFF("D", T1.Date, MIN(T2.Date)) AS DaysDifference
FROM    YourTable T1
LEFT JOIN YourTable T2
    ON T1.AccountNumber = T2.AccountNumber
    AND T2.Date > T1.Date
GROUP BY T1.ID, T1.AccountNumber, T1.Date;</code>

このクエリは、YourTable (T1 および T2 というエイリアス) をそれ自体に結合します。 LEFT JOIN は、後続のトランザクションがない場合でも、すべてのトランザクションが含まれることを保証します。 MIN(T2.Date) はその後の最も早いトランザクション日を検索し、DATEDIFF("D", T1.Date, MIN(T2.Date)) は差を日数で計算します。

方法 2: 次のトランザクション日のネストされたサブクエリ

この代替案では、ネストされたサブクエリを使用して、各アカウントの次の取引日を効率的に決定します。

<code class="language-sql">SELECT  ID,
        AccountNumber,
        Date,
        NextDate,
        DATEDIFF("D", Date, NextDate) AS DaysDifference
FROM    (   SELECT  ID, 
                    AccountNumber,
                    Date,
                    (   SELECT  MIN(Date) 
                        FROM    YourTable T2
                        WHERE   T2.AccountNumber = T1.AccountNumber
                        AND     T2.Date > T1.Date
                    ) AS NextDate
            FROM    YourTable T1
        ) AS T</code>

内部クエリは各行の NextDate を検索します。次に、外側のクエリは DATEDIFF() を使用して日の差を計算します。

どちらの方法でも、口座番号、取引日、次の取引日、および計算された日付の差が得られます。 最適な選択は、特定のデータ量とパフォーマンスのニーズによって異なります。 自己結合は非常に大規模なデータセットでは効率が低下する可能性がありますが、ネストされたサブクエリの方が読みやすい場合があります。

以上がMicrosoft Access で連続する行間の日付の差を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。