>데이터 베이스 >MySQL 튜토리얼 >SQL을 사용하여 Access 데이터베이스의 연속 레코드 간 날짜 차이를 계산하는 방법은 무엇입니까?

SQL을 사용하여 Access 데이터베이스의 연속 레코드 간 날짜 차이를 계산하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-08 08:17:411009검색

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.