어려운 쿼리 질문하나 드립니다. 이게 가능할런진 모르겠네요 0 3 1,017

by 준일정 [2020.02.18 15:54:40]


select 
 EMPNO,
 ENAME,	
 JOB,
 SAL,	
 COMM,	
 DEPTNO,	
 case when job='사원' then '사원입니다.' 
      when job='부장' then '부장입니다.'
      else '' end as 'test'
from emp

--이렇게 쿼리를 짜면 데이터가 나옵니다. 

EMPNO ENAME JOB SAL COMM DEPTNO test
1001 정김사랑 사원 300 NULL 20 사원입니다.
1002 한예슬 대리 250 80 30  
1003 오지호 과장 500 100 30  
1004 이병헌 부장 600 NULL 20 부장입니다.
1005 신동협 과장 450 200 30  
1006 장동건 부장 480 NULL 30 부장입니다.
1007 이문세 부장 520 NULL 10 부장입니다.
1008 감우성 차장 500 0 30  
1009 안성기 사장 1000 NULL 20  
1010 이병헌 과장 500 NULL 10  
1011 조향기 사원 280 NULL 30 사원입니다.
1012 강혜정 사원 300 NULL 20 사원입니다.
1013 박중훈 부장 560 NULL 20 부장입니다.
1014 조인성 사원 250 NULL 10 사원입니다.

이렇게 나옵니다 case when 절을 사용하면요 

즉, job이라는 컬럼의 특정값 

when job='사원'

when job='부장'

이렇게 했을 경우에

사원입니다.

부장입니다.

라는 데이터를 뿌려주게 되어 있습니다. 

여기까진 간단합니다. 

 

하지만 job컬럼이 많아 져서 

부장1, 부장1, 부장2-2,부장 2-2

사원 3, 사원3, 사원 3-1, 사원 3-1 

이렇게 무수히 많을 경우 

무수한 job데이터에

when job='사원1'

when job='사원2'

when job='사원3' ..... 이렇게 할 수 가 없습니다. 

 

그러므로 동일한 컬럼 데이터에 한에서 

같은 job끼리 

사원1입니다... 

사원1-1입니다.. 

사원2입니다.. 

이런식으로 쿼리를 짜고 싶은데 이거 가능한가요?

 

by sczedge [2020.02.18 17:22:56]

case job like '사원%' then concat(job,'입니다.')

잘짠것인지는 몰라도 가능할것같네요.


by 마농 [2020.02.19 07:52:08]

대리 과장은 안하나요?
다 하는게 맞다면? Case 문이 불필요합니다.
그냥 '입니다' 만 붙여주면 되는게 아닌지? --> job || '입니다.'


by 느훼훼 [2020.02.19 13:23:40]

앞단에 무조건 사원/부장이 나온다면 substr 사용하면 간단하지 않을까요?

방법은 되게 여러가지일듯여~

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