MSSQL GROUP BY 시 MAX 값을 가져오는 구문 0 2 4,423

by 미노 [SQL Query] mssql groupby max [2023.09.22 11:32:57]


안녕하세요. GROUP BY 시에 최대값을 가져오는 구문 질문 드립니다.

 

MAX를 사용하지 않았을 때의 조회 결과

월1 월2 결과
202306 202308 8
202307 202308 17
202306 202308 30

=> 월1과 월2로 묶어 결과의 최대값을 가져오고 싶습니다.

 

SELECT

월1, 월2, MAX(가져올값)

FROM 테이블

GROUP BY 월1, 월2

 

이런식으로 쓰면 결과가

월1 월2 결과
202306 202308 8
202307 202308 17

 

최대값을 가져오지 못하더라구요 (202306에 30이 아닌 8로 들어감)

그래서 서브쿼리를 여기저기 사용해보았는데도 결과가 똑같아서 도움 요청합니다...

 

by 마농 [2023.09.22 13:02:16]

값이 숫자(8)가 아닌 문자('8')인지 확인해 보세요.
문자에서는 '8' 이 '30' 보다 큰 것이 맞습니다.


by 마농 [2023.09.22 16:36:35]
WITH t AS
(
SELECT  8  n  -- 숫자 컬럼
     , '8' v  -- 문자 컬럼
UNION ALL SELECT 30, '30'
)
SELECT MAX(n)     n  -- 숫자 컬럼 맥스 -> 30
     , MAX(v)     v  -- 문자 컬럼 맥스 -> 8
     , MAX(v + 0) x  -- 문자를 숫자로 치환하여 맥스 -> 30
  FROM t
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입