>source

Id, RevisionId 및 Data와 같은 세 가지 값이있는 항목이 포함 된 테이블이 있습니다.

| Id | RevisionId | Data   |
| 0  | 0          | Value1 |
| 0  | 1          | Value2 |
| 1  | 0          | Value1 |
| 2  | 0          | Value1 |
| 2  | 1          | Value2 |
| 2  | 3          | Value3 |

각각에 대해 RevisionId가 가장 높은 Id 만 원한다면 이와 같은 SQL 문을 만들 수 있습니다.

SELECT Id, MAX(RevisionId) AS RevisionId FROM RevisionTable GROUP BY Id

하지만 각 ID에 대해 해당 최대 RevisionId에 연결된 데이터 값을 얻는 방법을 모르겠습니다.

  • 답변 # 1

    당신이 사용할 수있는 row_number() :

    select *
    from (
        select t.*, row_number() over(partition by id order by revisionid desc) rn
        from mytable t
    ) t
    where rn = 1
    
    

    top(1) with ties 또한 떠 오릅니다.

    select top (1) with ties t.*
    from mytable t
    order by row_number() over(partition by id order by revisionid desc) rn
    
    

관련 자료

  • 이전 linux - 포트란 (MKL)을 사용하여 정적 라이브러리의 함수를 so 파일로 압축하는 방법
  • 다음 c# - SQL SERVER의 SqlBulkCopy ID