Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Perbezaan Tarikh Antara Rekod Berturut-turut dalam Pangkalan Data Akses Menggunakan SQL?
Mengira Perbezaan Tarikh Antara Rekod Berjujukan dalam Pangkalan Data Akses menggunakan SQL
Menganalisis data temporal selalunya melibatkan penentuan masa berlalu antara entri berturut-turut. Artikel ini menunjukkan cara mengira perbezaan tarikh antara rekod berturut-turut berkongsi nombor akaun yang sama dalam pangkalan data Access menggunakan SQL.
Kaedah 1:
Pertanyaan SQL berikut mengira perbezaan tarikh untuk rekod berturut-turut yang dikaitkan dengan nombor akaun 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>
Pendekatan ini menggunakan LEFT JOIN
untuk mengenal pasti tarikh berikutnya bagi setiap rekod dan kemudian menggunakan fungsi DATEDIFF
untuk mengira perbezaan hari.
Kaedah 2:
Sebagai alternatif, pertanyaan ini mencapai hasil yang sama:
<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>
Kaedah ini menggunakan subkueri untuk mencari tarikh seterusnya bagi setiap rekod sebelum mengira perbezaan tarikh.
Contoh Output (Nombor Akaun 1001):
Kedua-dua pertanyaan menghasilkan set hasil yang serupa:
AccountNumber | Date | DaysDifference |
---|---|---|
1001 | 10/9/2011 | 2 |
1001 | 12/9/2011 | 8 |
1001 | 20/9/2011 | NULL |
Nilai NULL
menunjukkan bahawa tiada rekod berikutnya untuk entri terakhir. Ingat untuk menggantikan "YourTable"
dengan nama sebenar jadual anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Tarikh Antara Rekod Berturut-turut dalam Pangkalan Data Akses Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!