아래와 같은 테이블의 값을 UPDATE데이티 할력고 합니다.
앞 시간대의 환산값과 다음 시간대의 부하를 연산해서 다음시간대의 환산값을 갱신할려고 합니다.
(앞시간대의 값이 0일경우에는 그 이전 시간대의 값을 가져오는 것도 해야되긴하지만)
쿼리를 아래와 같이 만들었는데, 논리적인 오류는 없는데, 이걸을 PL/SQL에서
적용했더니 잘 안되네요..
변경전 테이블명 LOAD
이름 일자 시간 부하 환산값
홍길동 20211230 22 0.8 45
홍길동 20211230 23 0.2 0
김영자 20211230 22 0.84 42
김영자 20211230 23 0.4 0
갱신후 테이블 LOAD
이름 일자 시간 부하 환산값
홍길동 20211230 22 0.8 45
홍길동 20211230 23 0.2 45*0.2
김영자 20211230 22 0.84 42
김영자 20211230 23 0.4 42*0.4
작성쿼리
UPDATE LOAD B
SET 환산값 = (SELECT A.환산값 * B.부하
FROM LOAD A
WHERE A.일자 = B.일자
AND A.시간 = 22
AND B.시간 = 23
AND A.이름 = B.이름)
WHERE EXISTS ON ( SELECT 1
FROM LOAD A
WHERE A.일자 = B.일자
AND A.시간 = 22
AND B.시간 = 23
AND A.이름 = B.이름);
|