728x90
반응형
MSSQL 작업하면서 최대값을 가지고 있는 Row들을 가지고 오고 싶었다.
같은 ID를 가진것들 중에서 NUM의 최대값을 구하는 방법을 알아보자.
반응형
group by 사용하는 방법
SELECT T.ID, T.NUM
FROM MYTABLE T
INNER JOIN (
SELECT ID, MAX(NUM) NUM
FROM MYTABLE
GROUP BY ID
) Q ON T.ID = Q.ID AND T.NUM = Q.NUM
Group By와 SubQuery를 사용해서 ID와 MAX값을 가져온 뒤,
INNER JOIN으로 해당하는 ROW을 찾음.
* Group by는 해당하는 Row의 다른 필드의 값을 가지고 올 수 없음.
self left join 사용하는 방법
SELECT T.*
FROM MYTABLE T
LEFT JOIN MYTABLE Q ON T.ID = Q.ID AND T.NUM < Q.NUM
WHERE Q.NUM IS NULL;
Group by 사용 하지 않고 self left join을 통해 최대값을 가지고 온다.
Q.NUM이 NULL이면 T.NUM이 최대값이기때문에 최대값 추출 가능.
728x90
반응형
'> 개발-IT-인터넷 > > SQL' 카테고리의 다른 글
[MSSQL] 날짜변환 CONVERT Style 날짜포맷 (0) | 2023.09.13 |
---|---|
[MSSQL] 데이터 타입변환, 형변환, 날짜변환 CONVERT (0) | 2023.09.13 |
[MSSQL] 데이터 타입변환, 형변환 CAST (0) | 2023.09.13 |
[MSSQL] 무설치 온라인 쿼리 연습 사이트 (0) | 2023.08.18 |
[MSSQL] 테이블 복사 방법 (0) | 2023.08.17 |