SQL Server에서 0이 아닌 검사 값으로 최신 레코드를 효율적으로 검색
이 문서에서는 특히 '검사' 열 값이 0보다 큰 레코드에 초점을 맞춰 SQL Server 테이블의 각 그룹에 대해 가장 최근 레코드를 검색하는 방법을 보여줍니다. 다음 구조의 샘플 테이블을 고려해 보겠습니다.
<code>| GroupID | RecordDate | CashAmount | CheckAmount | |---|---|---|---| | 1 | 2013-01-01 | 0 | 0 | | 2 | 2013-01-01 | 0 | 800 | | 1 | 2013-01-03 | 0 | 700 | | 3 | 2013-01-01 | 0 | 600 | | 1 | 2013-01-02 | 0 | 400 | | 3 | 2013-01-05 | 0 | 200 |</code>
우리의 목표는 다음 결과 집합을 얻는 것입니다.
<code>| GroupID | RecordDate | CheckAmount | |---|---|---| | 2 | 2013-01-01 | 800 | | 1 | 2013-01-03 | 700 | | 3 | 2013-01-05 | 200 |</code>
SQL 쿼리를 사용하여 이를 달성하는 방법은 다음과 같습니다.
먼저 RecordDate
가 0보다 큰 각 GroupID
에 대해 최대 CheckAmount
를 식별합니다.
<code class="language-sql">SELECT GroupID, MAX(RecordDate) AS MaxRecordDate FROM YourTable WHERE CheckAmount > 0 GROUP BY GroupID;</code>
그런 다음 이 결과를 원래 테이블에 다시 결합하여 해당 CheckAmount
:
<code class="language-sql">SELECT yt.GroupID, yt.RecordDate, yt.CheckAmount FROM YourTable yt INNER JOIN ( SELECT GroupID, MAX(RecordDate) AS MaxRecordDate FROM YourTable WHERE CheckAmount > 0 GROUP BY GroupID ) AS MaxDates ON yt.GroupID = MaxDates.GroupID AND yt.RecordDate = MaxDates.MaxRecordDate;</code>
이 쿼리는 0이 아닌 수표 금액을 효율적으로 필터링하고 각 그룹의 가장 최근 기록만 선택합니다. YourTable
을 테이블의 실제 이름으로 바꿔야 합니다. 코드 가독성과 유지 관리성을 높이려면 설명이 포함된 열 이름(예: GroupID
및 CheckAmount
)을 사용하는 것이 좋습니다.
위 내용은 SQL Server에서 0이 아닌 검사를 사용하여 각 그룹의 가장 최근 레코드를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!