ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。