0

UPDATE Actual
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 Actual
INNER JOIN
(SELECT *
FROM "MATCHPOINT_DEV"."GTT_temp_raw_neft_cbs_iss" WHERE (reversalrrn IS NOT NULL OR reversalrrn <> '')
) AS Reversal
ON Actual.rrn = Reversal.reversalrrn ;

Getting error

SQL Error: ORA-00933: SQL command not properly ended

  1. 00000 - "SQL command not properly ended"
Syan
  • 137
  • 1
  • 5
  • 17

2 Answers2

1

One method uses merge. Another method, subqueries:

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 
             );
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786
0

Oracle does not support that query You can try the following format in this thread Update statement with inner join on Oracle

Community
  • 1
  • 1