UPDATE 쿼리에서의 LAG, LEAD 함수 0 2 3,428

by 악어새 [Oracle 기초] UPDATE LAG LEAD [2019.03.15 16:46:57]


안녕하세요.

테이블에 UPDATE 쿼리를 사용할때 LAG, LEAD 함수를 사용하려고 했는데

분석함수는 조회쿼리에서만 사용할 수 있다고 하더라고요,,

UPDATE TEST
   SET COLUMN = CASE  WHEN LAG(TEST_COLUMN,1) OVER ( ORDER BY COL ASC ) = 'Y' THEN 1
                      WHEN LAG(TEST_COLUMN,2) OVER ( ORDER BY COL ASC ) = 'Y' THEN 2
                      WHEN LAG(TEST_COLUMN,3) OVER ( ORDER BY COL ASC ) = 'Y' THEN 3
                      ELSE 0 END
;

다음과 같은 UPDATE 쿼리에서 LAG 대신 다른 방법이 있을까요?

by 꼬랑지 [2019.03.15 17:39:26]

MERGE문을 사용하면 USING절에서 SELECT가 가능하니 이를 응용해 보는게 어떨까요?

 

MERGE INTO EMP A
USING (
SELECT EMPNO,ENAME
,LAG(SAL,1) OVER(ORDER BY EMPNO) LAG_SAL
FROM EMP
WHERE 1=1
AND DEPTNO='20'
) B
ON (A.EMPNO=B.EMPNO)
WHEN MATCHED THEN
    UPDATE SET A.SAL=B.LAG_SAL
WHEN NOT MATCHED THEN
    INSERT (EMPNO,ENAME,SAL) VALUES(B.EMPNO,B.ENAME,B.LAG_SAL)
    WHERE 1=2  --INSERT문 무효화


by 악어새 [2019.03.18 09:04:43]

감사합니다! merge문으로 해결했습니다 ㅠㅠ

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