2016-11-24 81 views
0

UPDATE實際
SET Actual.tranamt = ABS(Actual.tranamt-Reversal.tranamt),
Actual.tranamt_org = ABS(Actual.tranamt),
Actual.trans_flag = 'U'
FROM
( SELECT *
FROM 「MATCHPOINT_DEV」。 「GTT_temp_raw_neft_cbs_iss」
)AS實際
INNER JOIN
(SELECT *
FROM 「MATCHPOINT_DEV」。 「GTT_temp_raw_neft_cbs_iss」 WHERE(reversalrrn IS NOT NULL或REVE 'rsarrrn <>'')
)AS Reversal
ON Actual.rrn = Reversal.reversalrrn;如何使用Oracle中的派生表更新語句?

入門錯誤

SQL錯誤:ORA-00933:SQL命令未正確結束

  1. 00000 - 「SQL命令不能正常結束」
+1

Oracle是否真的支持非標準的UPDATE FROM語法? – jarlh

+0

這對Oracle來說是無效的語法。相反,你應該看看在MERGE語句中進行更新。 – Boneist

回答

0

一種方法使用merge。另一種方法,子查詢:

UPDATE "MATCHPOINT_DEV"."GTT_temp_raw_neft_cbs_iss" Actual         
    SET tranamt = 
     (SELECT ABS(Actual.tranamt - x.tranamt),       
      FROM "MATCHPOINT_DEV"."GTT_temp_raw_neft_cbs_iss" reversal 
      WHERE (reversal.reversalrrn IS NOT NULL OR reversal.reversalrrn <> '') and 
       Actual.rrn = Reversal.reversalrrn 
     ),      
     tranamt_org = ABS(Actual.tranamt),         
     trans_flag = 'U'       
WHERE EXISTS (SELECT 1 
       FROM "MATCHPOINT_DEV"."GTT_temp_raw_neft_cbs_iss" reversal 
       WHERE (reversal.reversalrrn IS NOT NULL OR reversal.reversalrrn <> '') and 
        Actual.rrn = Reversal.reversalrrn 
      );