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
이런 식으로 해 보려 했는데 에러가 나타나네요