> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 0이 아닌 검사를 사용하여 각 그룹의 가장 최근 레코드를 찾는 방법은 무엇입니까?

SQL Server에서 0이 아닌 검사를 사용하여 각 그룹의 가장 최근 레코드를 찾는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-08 13:27:42
원래의
458명이 탐색했습니다.

How to Find the Most Recent Record for Each Group with Non-Zero Checks in SQL Server?

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을 테이블의 실제 이름으로 바꿔야 합니다. 코드 가독성과 유지 관리성을 높이려면 설명이 포함된 열 이름(예: GroupIDCheckAmount)을 사용하는 것이 좋습니다.

위 내용은 SQL Server에서 0이 아닌 검사를 사용하여 각 그룹의 가장 최근 레코드를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿