급여테이블이 있습니다. (키는 이름과 지급년월로 하겠습니다.)
이름 | 지급년월 | 급여 |
A | 202407 | 100만원 |
B | 202407 | 100만원 |
A | 202408 | 200만원 |
B | 202408 | 300만원 |
C | 202408 | 100만원 |
급여의 변동사항을 조회하고 싶습니다.
조회조건 : 기준년월 202407 / 비교년월 202408
이름 | 기준년월 | 비교년월 |
A | 100만원 | 200만원 |
B | 100만원 | 300만원 |
C | 0원 | 100만원 |
C의 경우 7월에는 급여가 없지만 8월에는 있기때문에 기준년월의 경우 0원으로 뜨게 하고싶습니다. (조회조건을 기준년월 202406이나 기타 다른 월로 변경되어도 0원으로 동일하게)
이땐 어떤식으로 하면 될지 도움 부탁드립니다.
with base_t as ( select 'A' as 이름, '202407' as 지급년월, '100만원' as 급여 union all select 'B', '202407', '100만원' union all select 'A', '202408', '200만원' union all select 'B', '202408', '300만원' union all select 'C', '202408', '100만원' union all select 'D', '202401', '100만원' -- 테스트를 위한 추가 데이터 ) select 이름 , max(case when 지급년월 = '202407' then 급여 else '0원' end) as 기준년월 , max(case when 지급년월 = '202408' then 급여 else '0원' end) as 비교년월 from base_t group by 이름 order by 1
해당 쿼리는 기준/비교 년월 과 상관없이 테이블 내의 모든 이름을 기준으로 데이터를 출력 합니다.