MSSQL 질문드립니다. 0 2 1,313

by 재동이_김재훈 [2017.02.21 15:11:28]


MSSQL로 작업 중입니다.

ORACLE만 다뤄보다 이번에 MSSQL을 처음 다뤄보다 보니 어렵네요....

문제가 되는 구문입니다.

SELECT ROW_NUMBER() OVER(ORDER BY START_DT) AS RNUM, 
       TASK_CODE, 
       (SELECT A.TASK_NAME 
         FROM TB_TASK A
        WHERE A.TASK_CODE = TASK_CODE
       ) AS TASK_NAME, 

       WORK_TYPE, 
       (SELECT A.CODE_NAME 
         FROM COMM_CODE A 
        WHERE A.UP_CODE = 'EVENT' 
              AND A.CODE = WORK_TYPE 
       ) AS WORK_TYPE_NAME  
  FROM TB_WORK

위에 쿼리가 제가 의도하는 쿼리입니다.

TB_TASK에는 업무1, 업무2, 업무3, 업무4라는 코드가 들어 있는 상태구요 code 값은 숫자로 1부터 4로 가지고 있습니다.

문제는 TB_WORK에 0 값이 있다는 건데요

TASK_CODE 부분에 강제로 0을 제외한 숫자 아무거나 하나 집어넣으면 에러는 안 뜨던데 저렇게 하면 에러가 납니다.

오라클에서는 DECODE 같은 거로 0인 경우만 따로 텍스트를 보여주고 나머지는 (SELECT ~~~) 이렇게 서브쿼리로 불러왔었는데

MSSQL에서는 어떻게 처리 해야 할지 잘 모르겠습니다.

CASE TASK_CODE

  WHEN 0

  THEN '메세지'

  ELSE (서브쿼리)

END

이런 식으로 해 보려 했는데 에러가 나타나네요

by 랑에1 [2017.02.21 15:31:49]
SELECT ROW_NUMBER() OVER(ORDER BY START_DT) AS RNUM, 
       TASK_CODE, 
       (SELECT A.TASK_NAME 
         FROM TB_TASK A
        WHERE A.TASK_CODE = B.TASK_CODE 
       ) AS TASK_NAME, 
       WORK_TYPE, 
       (SELECT A.CODE_NAME 
         FROM COMM_CODE A 
        WHERE A.UP_CODE = 'EVENT' 
              AND A.CODE = B.WORK_TYPE 
       ) AS WORK_TYPE_NAME  
  FROM TB_WORK B

이렇게 한번 해보세요.

 


by 재동이_김재훈 [2017.02.21 15:40:20]

덕분에 잘 해결했습니다. 감사합니다. ㅎㅎ

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