안녕하세요 merge 관련 질문드립니다. 0 5 855

by naverTT [2018.11.20 10:51:28]


MERGE

INTO TABLE1 T1

USING (SELECT DISTINCT(COL1) AS COL1 FROM TABLE2) T2

ON (T1.NEWCODE = T2.COL1)

WHEN MATCHED THEN

UPDATE SET T1.OLDCODE = T2.OLDCOL;

 

TABLE2 에서 날짜만 다르고  COL1값은 동일한 row 가 여러개라 distinct를 걸어주었습니다.

위 쿼리와 같이 수행하려고 하는데 T2.COL1에서 부적합한 식별자라는 오류가 발생합니다.

왜그런걸까요 ㅠㅠ 도움 부탁 드립니다..

 

--------------------------------------------------------------------

OLDCOL, COL1, STATUS 가 동일한 경우가 있어서 아래와 같이 수정하였습니다.

그래도 동일한 컬럼에 대해 부적합한 식별자 오류가 발생합니다.

 

MERGE

INTO TABLE1 T1

USING (SELECT MAX(OLDCOL), MAX(COL1), MAX(STATUS) FROM TABLE2 GROUP BY OLDCOL) T2

ON (T1.NEWCODE = T2.COL1)

WHEN MATCHED THEN

UPDATE SET T1.OLDCODE = T2.OLDCOL;

by 봉 [2018.11.20 10:59:13]

T2 에 T2.OLDCOL 칼럼이 명시되있지 않네요


by naverTT [2018.11.20 11:00:17]

OLDCOL 을 추가해도 동일한 오류가 발생합니다..ㅜ


by 봉 [2018.11.20 11:08:25]

SELECT MAX(OLDCOL) AS OLDCOL, MAX(COL1) AS COL1, MAX(STATUS) FROM TABLE2 GROUP BY OLDCOL

칼럼 알리아스가 없습니다


by 마농 [2018.11.20 11:28:58]
MERGE INTO table1 t1
USING
(
SELECT col1
     , MAX(oldcol) oldcol
  FROM table2
 GROUP BY col1
) t2
ON (t1.newcode = t2.col1)
WHEN MATCHED THEN
UPDATE SET t1.oldcode = t2.oldcol
;

 


by naverTT [2018.11.20 15:45:16]

감사합니다!!

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