데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
merge into target tar
using (
) source src
on tar.col1 = src.col1
update
조건1 (tar의 col3 = 'Y'일때)
tar.col1 = src.col1
, tar.col2 = src.col2
조건2 (tar의 col3 = 'N' 이거나 NULL일때)
tar.col4 = src.col4
, tar.col5 = src.col5
이런식으로 update 하기전에 조건별로 update 할 컬럼을 나누고 싶은데 할 수 있는 방법을 못 찾아서
이렇게 질문 올려봅니다.
답변 주시면 초짜의 멘탈을 조금 딱딱한 쿠크다스로 업그레이드 할 수 있을 것 같습니다.
제가 찾아본봐로는 끝에 where절을 주는방법 까지만 찾을 수 있었는데 그렇게 하면
where 조건에 해당하지 않는 경우에는 처리가 불가능 해서 사용할 수가 없었습니다.
읽어주셔서 감사합니다. 해결방법 아시는분은 답변 부탁드리겠습니다. (__)
iif 나 case 문을 이용해서 처리할 수 있겟네요~
2가지 방법 중 취향에 맞는거로 하시면 되겠네요~
update
a.col1 = iif ( isnull(a.col3,'n') = 'y', b.col1, a.col1)
,a.col2 = case isnull(a.col3,'n') when 'y' then b.col2 else a.col2 end