UPDATE文の書き方を教えて下さい。
いつもお世話になっています。
UPDATEの書き方について教えて下さい。
以下のようなUPDATE文を作成しました。
処理的には必要な結果を返してくれていますが、もう少しシンプルには
ならないでしょうか?
UPDATE文がまだ理解出来ていないのですが、”WHERE EXISTS(”以降に
書いているSELECT文は、SET文の値算出時にも同じSELECT文を書いて
いるのですが、それを代用することは出来ないのでしょうか?
(SELECTの結果をWHERE文の中で簡単に呼び出して使えないのでしょうか?)
※うまく内容が伝わってないかもしれませんが、どうぞよろしくお願いします。
<<<更新処理>>>
UPDATE TBL01 SET(
TBL01_MARNO,
TBL01_UPDYMD
)=(
SELECT
TBL02_MARNO,
TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDD'))
FROM
(SELECT
TBL02_TENCD,
TBL02_REN,
TBL02_MARNO,
TBL02_UPDKBN,
RANK ()
OVER (PARTITION BY TBL02_TENCD,
TBL02_REN
ORDER BY TBL02_YMD DESC,
TBL02_DAT DESC
) WRK_RANK
FROM TBL02
WHERE TBL02_OKFLG = 1
)
WHERE TBL02_TENCD = TBL01_TENCD
AND TBL02_REN = TBL01_REN
AND WRK_RANK = 1
AND TBL02_UPDKBN = 2
)
WHERE EXISTS(
SELECT 'TRUE'
FROM
(SELECT
TBL02_TENCD,
TBL02_REN,
TBL02_MARNO,
TBL02_UPDKBN,
RANK ()
OVER (PARTITION BY TBL02_TENCD,
TBL02_REN
ORDER BY TBL02_YMD DESC,
TBL02_DAT DESC
) WRK_RANK
FROM TBL02
WHERE TBL02_OKFLG = 1
)
WHERE TBL02_TENCD = TBL01_TENCD
AND TBL02_REN = TBL01_REN
AND TBL02_UPDKBN = 2
AND WRK_RANK = 1
);