by bono0366 [SQL Query] mssql sql 조회 [2018.05.29 15:16:47]
안녕하세요, MSSQL 쿼리에 대해 질문이 드릴 것 있어서 글을 쓰게 되었습니다.
T1 테이블 position 컬럼에는 직위와 직책 구분없이 value 들이 입력된 상황에서
각각 직위와 직책에 맞게 컬럼을 구분한 후, 직위는 직급에 맞게 정렬해서 보고 싶습니다.
(T2 테이블에는 직책 value가 조회 가능합니다.)
테이블 T1
position |
사장 |
대표이사 |
개발자 |
차장 |
DBA |
....... |
테이블 T2 (모든 직책 VALUE가 조회 가능합니다.)
직책_VAL |
개발자 |
AA |
PM ..... |
원하는 결과 모양
직책 | 직위 |
개발자 | 대표이사 |
DBA | 사장 |
TA | 차장 |
..... | .... |
case 구문을 사용해서 고민을 해보았지만, 도통 답을 못찾겠습니다. 부탁드립니다ㅠㅠ
WITH t1 AS ( SELECT '사장' position UNION ALL SELECT '대표이사' UNION ALL SELECT '개발자' UNION ALL SELECT '차장' UNION ALL SELECT 'DBA' UNION ALL SELECT 'TA' UNION ALL SELECT 'AA' UNION ALL SELECT 'PM' ) , t2 AS ( SELECT '개발자' job UNION ALL SELECT 'DBA' UNION ALL SELECT 'TA' UNION ALL SELECT 'AA' UNION ALL SELECT 'PM' ) SELECT CASE WHEN b.job IS NULL THEN 'position' ELSE 'job' END gb , a.position v FROM t1 a LEFT OUTER JOIN t2 b ON a.position = b.job ORDER BY gb, v ;