I want to update two column using case statement please suggest to me how to achieve this.
I have tried below piece of code but which giving syntax error:
UPDATE SASDB.TEMP_VALIDATE_FIN_ENTRIES
(CASE WHEN (LENGTH(TRIM(ACCOUNT_ID)) = 16
AND NVL(LENGTH(TRIM(TRANSLATE(UPPER(ACCOUNT_ID),'0123456789',' '))),0)=0
AND LENGTH(TRIM(SOL_ID)) = 4
AND NVL(LENGTH(TRIM(TRANSLATE(UPPER(SOL_ID),'0123456789',' '))),0)=0
AND NVL(LENGTH(TRIM(TRANSLATE(UPPER(DEBIT_TRANS_AMT),'0123456789,.',' '))),0)=0
AND NVL(LENGTH(TRIM(TRANSLATE(UPPER(CREDIT_TRANS_AMT),'0123456789,.',' '))),0)=0)
THEN
SET VALIDATION_REMARKS='ACCOUNTS ARE VALIDATED SUCCESSFULLY'
SET VALIDATION_STATUS='YES'
WHEN (LENGTH(TRIM(ACCOUNT_ID)) <> 16)
THEN
SET VALIDATION_REMARKS='ACCOUNT_ID SHOULD BE LENGTH 16'
SET VALIDATION_STATUS='NO'
WHEN LENGTH(TRIM(SOL_ID)) <> 4
THEN
SET VALIDATION_REMARKS='SOL_ID HAS NOT LENGTH 4'
SET VALIDATION_STATUS='NO'
WHEN NVL(LENGTH(TRIM(TRANSLATE(UPPER(SOL_ID),'0123456789',' '))),0)>0
THEN
SET VALIDATION_REMARKS='SOL_ID HAS ALPHABET OR SPECAIL CHARACTER'
SET VALIDATION_STATUS='NO'
WHEN NVL(LENGTH(TRIM(TRANSLATE(UPPER(ACCOUNT_ID),'0123456789',' '))),0)>0
THEN
SET VALIDATION_REMARKS='ACCOUNT_ID HAS ALPHABET OR SPECAIL CHARACTER'
SET VALIDATION_STATUS='NO'
WHEN NVL(LENGTH(TRIM(TRANSLATE(UPPER(CREDIT_TRANS_AMT),'0123456789,.',' '))),0)>0
THEN
SET VALIDATION_REMARKS='CREDIT TRANASTION AMOUNT HAS SPECIAL CHARACTER'
SET VALIDATION_STATUS='NO'
WHEN NVL(LENGTH(TRIM(TRANSLATE(UPPER(DEBIT_TRANS_AMT),'0123456789,.',' '))),0)>0
THEN
SET VALIDATION_REMARKS='DEBIT TRANASTION AMOUNT HAS SPECIAL CHARACTER'
SET VALIDATION_STATUS='NO'
WHEN ACCOUNT_EXIT_FLAG IS NULL
THEN SET VALIDATION_REMARKS='ACCOUNT DOESNOT EXIST IN DATABASE'
SET ACCOUNT_EXIT_FLAG=NVL(ACCOUNT_EXIT_FLAG,'NO')
END);
The above code is failing with syntax error please let me know how to resolve those error.
You'll have to change your structure around.
UPDATE SASDB.TEMP_VALIDATE_FIN_ENTRIES SET
VALIDATION_REMARKS = CASE WHEN @columnname THEN ELSE END,
VALIDATION_STATUS = CASE WHEN @columnname THEN ELSE END
try this simplified solution :
UPDATE SASDB.TEMP_VALIDATE_FIN_ENTRIES
set (VALIDATION_REMARKS, VALIDATION_STATUS)=
(
CASE
WHEN LENGTH(TRIM(NVL(ACCOUNT_ID, '0')) = 16 AND TRIM(TRANSLATE(NVL(ACCOUNT_ID, '0'),'0123456789',' '))=''
AND LENGTH(TRIM(NVL(SOL_ID, '0'))) = 4 AND TRIM(TRANSLATE(NVL(SOL_ID, '0'),'0123456789',' '))=''
AND TRIM(TRANSLATE(NVL(DEBIT_TRANS_AMT, '0'),'0123456789,.',' '))=''
AND TRIM(TRANSLATE(NVL(CREDIT_TRANS_AMT, '0'),'0123456789,.',' '))='' THEN 'ACCOUNTS ARE VALIDATED SUCCESSFULLY'
WHEN LENGTH(TRIM(NVL(ACCOUNT_ID, '0'))) <> 16 THEN 'ACCOUNT_ID SHOULD BE LENGTH 16'
WHEN LENGTH(TRIM(NVL(SOL_ID, '0'))) <> 4 THEN 'SOL_ID HAS NOT LENGTH 4'
WHEN TRIM(TRANSLATE(NVL(SOL_ID, '0'),'0123456789',' '))<>'' THEN 'SOL_ID HAS ALPHABET OR SPECAIL CHARACTER'
WHEN TRIM(TRANSLATE(NVL(ACCOUNT_ID, '0'),'0123456789',' '))<>'' THEN 'ACCOUNT_ID HAS ALPHABET OR SPECAIL CHARACTER'
WHEN TRIM(TRANSLATE(NVL(CREDIT_TRANS_AMT, '0'),'0123456789,.',' '))<>'' THEN 'CREDIT TRANASTION AMOUNT HAS SPECIAL CHARACTER'
WHEN TRIM(TRANSLATE(NVL(DEBIT_TRANS_AMT, '0'),'0123456789,.',' '))<>'' THEN 'DEBIT TRANASTION AMOUNT HAS SPECIAL CHARACTER'
WHEN ACCOUNT_EXIT_FLAG IS NULL THEN 'ACCOUNT DOESNOT EXIST IN DATABASE'
ELSE 'CASE NOT TRAITED'
END,
CASE
WHEN LENGTH(TRIM(NVL(ACCOUNT_ID, '0')) = 16 AND TRIM(TRANSLATE(NVL(ACCOUNT_ID, '0'),'0123456789',' '))=''
AND LENGTH(TRIM(NVL(SOL_ID, '0'))) = 4 AND TRIM(TRANSLATE(NVL(SOL_ID, '0'),'0123456789',' '))=''
AND TRIM(TRANSLATE(NVL(DEBIT_TRANS_AMT, '0'),'0123456789,.',' '))=''
AND TRIM(TRANSLATE(NVL(CREDIT_TRANS_AMT, '0'),'0123456789,.',' '))='' THEN 'YES'
WHEN
LENGTH(TRIM(NVL(ACCOUNT_ID, '0'))) <> 16 OR
LENGTH(TRIM(NVL(SOL_ID, '0'))) <> 4 OR
TRIM(TRANSLATE(NVL(SOL_ID, '0'),'0123456789',' '))<>'' OR
TRIM(TRANSLATE(NVL(ACCOUNT_ID, '0'),'0123456789',' '))<>'' OR
TRIM(TRANSLATE(NVL(CREDIT_TRANS_AMT, '0'),'0123456789,.',' '))<>'' OR
TRIM(TRANSLATE(NVL(DEBIT_TRANS_AMT, '0'),'0123456789,.',' '))<>'' OR
ACCOUNT_EXIT_FLAG IS NULL THEN 'NO' THEN 'NO'
ELSE 'CASE NOT TRAITED'
END
)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.