UPDATE문에 사용도는 FROM절의 서브쿼리는 직접적으로 UPDATE 대상 테이블에 대한 뷰로 생성되기에
서브쿼리에서 사용된 테이블 별칭이나 칼럼명은 직접적으로 대상 테이블이 아니라 참조할 수 없다..
따라서 직접적으로 UPDATE 대상인 참조 테이블의 테이블을 참조하는 형식으로 작성해야 된다.
UPDATE
(
SELECT
MK,MB,BN,BB,MT,SUM
FROM
(
SELECT
A.MASTER_KYOHWAN MK,
A.MASTER_BLOCK MB,
B.BKBR_BKNAME BN,
b.bkbr_brname BB,
A.MASTER_STATUS MT,
SUM(A.MASTER_AMOUNT) SUM
FROM MASTER_PROPOSE A
LEFT OUTER JOIN BKBR B
ON A.MASTER_BK||MASTER_BR = B.BKBR_BK||BKBR_BR
WHERE
TO_NUMBER(A.MASTER_AMOUNT) > 1000000001 AND MASTER_GUBUN = '12'
AND A.MASTER_KYOHWAN LIKE '%05%'
GROUP BY
A.MASTER_KYOHWAN,
A.MASTER_BLOCK,
B.BKBR_BKNAME,
b.bkbr_brname,
A.MASTER_STATUS
)
WHERE 1=1
ORDER BY MK,MB,BN,BB
)
SET MT = 'FALSE'
WHERE BKBR_BKNAME IS NULL OR
bkbr_brname IS NULL
이런 식이 아니라
UPDATE MASTER_PROPOSE
SET MASTER_STATUS = 'FALSE'
WHERE MASTER_KYOHWAN LIKE '%05%'
AND MASTER_GUBUN = '12'
AND TO_NUMBER(MASTER_AMOUNT) > 1000000001
AND (MASTER_BK, MASTER_BR) IN
(
SELECT A.MASTER_BK,A.MASTER_BR
FROM MASTER_PROPOSE A
LEFT OUTER JOIN BKBR B
ON A.MASTER_BK||MASTER_BR = B.BKBR_BK||BKBR_BR
WHERE
TO_NUMBER(A.MASTER_AMOUNT) > 1000000001 AND A.MASTER_GUBUN = '12'
AND A.MASTER_KYOHWAN LIKE '%05%'
AND (B.BKBR_BKNAME IS NULL OR B.BKBR_BRNAME IS NULL
)
);
이런 식으로 해야 한다.
반응형
'SQL' 카테고리의 다른 글
저장 프로시져 그리고 뷰,, (2) | 2024.01.26 |
---|---|
SQLD 시험 대비 - 과목 1 정리 ( 최종2 ) (0) | 2023.03.17 |
SQLD 시험 대비 - 과목 1 정리 ( 최종 ) (0) | 2023.03.17 |
SQLD 시험 대비 - Group By, Join (3) (2) | 2023.03.16 |
SQLD 시험 대비 - Group By, Join (2) (0) | 2023.03.16 |