안녕하세요, 하나의 컬럼을 둘로 나누어서 보고 싶습니다. 0 4 1,213

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 구문을 사용해서 고민을 해보았지만, 도통 답을 못찾겠습니다. 부탁드립니다ㅠㅠ

 

by 아발란체 [2018.05.29 15:22:33]

직책과 직위를 나눌 수 있는 명확한 기준이 단서에는 없네요. OTL

 

저 단서로만 명확하게 나눠야 한다면,

역으로 저 한글명에 대해 1:1로 직책인지, 직위인지 구분하는 컬럼을 추가 분류 값을 넣는 것이 선행되어야 할 것 같습니다.


by 마농 [2018.05.29 15:41:59]

직책과 직위로 나눈다고 해도
예시와 같이 개발자와 대표이사가 한줄에 같이 나오는 이유가 있는지?
둘 사이 연관성이 없다면? 결과를 위와 같이 해서는 안될 것 같은데요.


by 아발란체 [2018.05.29 16:58:24]

얼.. 그러네요.. >ㅅ<)/ 


by 마농 [2018.05.29 15:49:26]
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
;

 

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