SQL を使用した Access データベース内の連続レコード間の日付の違いの計算
一時データの分析には、多くの場合、連続するエントリ間の経過時間を決定することが含まれます。この記事では、SQL を使用して、Access データベース内で同じアカウント番号を共有する連続するレコード間の日付の違いを計算する方法を説明します。
方法 1:
次の SQL クエリは、口座番号 1001 に関連付けられた連続するレコードの日付の差を計算します。
<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 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;</code>
このアプローチでは、LEFT JOIN
を使用して各レコードの後続の日付を識別し、DATEDIFF
関数を使用して日数の差を計算します。
方法 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 AS T2 WHERE T2.AccountNumber = T1.AccountNumber AND T2.Date > T1.Date ) AS NextDate FROM YourTable AS T1 ) AS T;</code>
このメソッドは、日付の差を計算する前に、サブクエリを使用して各レコードの次の日付を検索します。
出力例 (口座番号 1001):
両方のクエリは同様の結果セットを生成します:
AccountNumber | Date | DaysDifference |
---|---|---|
1001 | 10/9/2011 | 2 |
1001 | 12/9/2011 | 8 |
1001 | 20/9/2011 | NULL |
NULL
値は、最後のエントリに後続のレコードがないことを示します。 "YourTable"
をテーブルの実際の名前に置き換えることを忘れないでください。
以上がSQL を使用して Access データベース内の連続するレコード間の日付の違いを計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。