mysql 같은 테이블 내에서 2개의 결과를 하나로 만들고 싶습니다. 2

by 온 [MySQL] [2024.02.01 16:35:56]


현재 테이블에 

IDX INFO_AT INFO_NM

1

0
1 1

이런 방식으로 저장되는데 

결과값을 

INFO_NM0에는 INFO_AT이 0인 데이터의 INFO_NM을 

INFO_NM1에는 INFO_AT이 1인 데이터의 INFO_NM을 가져와서 

IDX INFO_NM0 INFO_NM1
1

이렇게 뽑아내고 싶습니다.

union으로 하려는데 한개의 값으로만 나오고

어떻게 하면 좋을지 감이 안잡혀서 여기에도 질문을 남겨봅니다. ㅠㅠ 

by pajama [2024.02.01 16:46:53]

아래처럼 max case when ~ 하는 방법이 있습니다.

 

-- 샘플데이터
with t (idx, info_at, info_nm) as (
select 1, 0, '영' union all
select 1, 1, '일' 
)
--
select idx, 
        max(case when info_at=0 then info_nm end) info_nm0,
        max(case when info_at=1 then info_nm end) info_nm1
from t
group by idx

 

 


by 온 [2024.02.01 17:12:10]

더 간단한 방법이 있었군요 !! 감사합니다 !!

 

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