도움 부탁드립니다 (UPDATE CASE문) 0 3 72

by Wally [SQL Query] [2018.09.12 10:45:32]



UPDATE   TSTP_DRV_PLAN_DTL_DIA
   SET   LAST_RPL_FORM_NO = :CHG_PYNS_NO,
         RPL_FORM_NO1 = CASE WHEN RPL_FORM_NO1 = NULL THEN :CHG_PYNS_NO END,
         RPL_FORM_NO2 = CASE WHEN RPL_FORM_NO2 = NULL THEN :CHG_PYNS_NO END,
         RPL_FORM_NO3 = CASE WHEN RPL_FORM_NO3 = NULL THEN :CHG_PYNS_NO END,
         RPL_FORM_NO4 = CASE WHEN RPL_FORM_NO4 = NULL THEN :CHG_PYNS_NO END,
         RPL_FORM_NO5 = CASE WHEN RPL_FORM_NO5 = NULL THEN :CHG_PYNS_NO END
 WHERE       DRV_DT = '20180430'
         AND FORM_NO = '1003'
         AND TO_CHAR (EXPECT_START_TIME, 'HH24:MI:SS') >=  '05:02:22';

 

//CHG_PYNS_NO는 파라미터입니다

// RPL_FORM_NO1칼럼의 값이 NULL일 경우 RPL_FORM_NO1칼럼의 값을 CHG_PYNS_NO로 변경후 RPL_FORM_NO2~5의 칼럼은 NULL 상태를 유지하고 싶습니다.

//마찬가지로 RPL_FORM_NO1의 값이 NULL 이 아닌경우 RPL_FORM_NO1의 값은 변경하지않고 RPL_FORM_NO2칼럼이 NULL 인지 체크하고 CHG_PYNS_NO를 입력하고싶습니다

도움부탁드리겠습니다.. 

 

 

 

by 우리집아찌 [2018.09.12 11:20:50]

DBMS는 어떤것 사용하시나요?  

IS NULL 이 아니라 = NULL 을 쓰시네요..

암튼 단순하게  RPL_FORM_NO1칼럼의 값이 NULL 일때와 아닐때 나누어서 CASE 문 분기하셔도 되고

두번 나누어서 사용해도 됩니다.


by Wally [2018.09.12 11:23:05]

오라클사용하고있습니다 ^^


by Wally [2018.09.12 11:36:44]

좋은 답변 감사합니다 ^^ 해결했습니다 

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