테이블 별칭을 지정해주지 않을경우에 발생되는 에러 0 1 150

by 곰장어 [2021.02.18 16:59:21]


MERGE INTO tableName t
USING Temp_tableName s
   ON t.gpi001 = s.gpi001
  AND t.gpi002 = s.gpi002
 WHEN MATCHED AND t.gpi003 != s.gpi003
              AND t.gpi004 != s.gpi004
              AND t.gpi005 != s.gpi005
      THEN
      UPDATE
         SET gpi003 = s.gpi003
           , gpi004 = s.gpi004
           , gpi005 = s.gpi005
           , gpi006 = CASE WHEN t.gpi003 <> s.gpi003 THEN '[상품명]'   + t.gpi003 + '→' + s.gpi003 + ' ; ' ELSE '' END
                    + CASE WHEN t.gpi004 <> s.gpi004 THEN '[구매가]'   + t.gpi004 + '→' + s.gpi004 + ' ; ' ELSE '' END
                    + CASE WHEN t.gpi005 <> s.gpi005 THEN '[품절여부]' + t.gpi005 + '→' + s.gpi005 + ' ; ' ELSE '' END
           , gpi007 = '변경'
 WHEN NOT MATCHED THEN
      INSERT (gpi001, gpi002, gpi003, gpi004, gpi005, gpi006, gpi007)
      VALUES (s.gpi001, s.gpi002, s.gpi003, s.gpi004, s.gpi005, '', '신규')
 WHEN NOT MATCHED BY SOURCE THEN
      UPDATE
         SET gpi007 = '단종'
;

 

 

맨 밑 라인에서 SOURCE 와 매치되지않을때 수행하는  

UPDATE SET GPI007 ='단종'  을 아래처럼 수정하려고하는데요,

UPDATE SET GPI007 ='단종' , T.GPI008 = T.GPI007 + '→' + S.GPI0007;

이렇게 GPI008 컬럼값을

기존에 gpi007 값이 판매 였을경우 판매 → 단종 이런식으로 UPDATE 해주려고 하는데

수행시 [여러 부분으로 구성된 식별자 "S.GPI007"은(는) 바인딩할 수 없습니다.]

라는 에러가 발생되는데 검색해보니 테이블 별칭을 지정해주지 않을경우에 발생되는 에러라고 하더라구요

그런데 위에서 별칭을 S로 지정해주었는데도 왜 뜨는지 원인을 잘모르겠네요..ㅠ

조언을 주신다면 감사하겠습니다

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