2017-09-29 2 views
-1

Je veux multiplier une valeur d'une colonne sélectionnée dans une sous-requête de mise à jour et d'obtenir une nouvelle valeur, comme celui-ci:utilisant l'expression arithmétique dans SET UPDATE

nouvelle valeur A.GROSS serait A.GROSS de TAO multiplié par le sélectionné B.PERCENT_VALUE à partir du fichier SPLIT

J'ai essayé comme ci-dessous:

UPDATE PS_HR_TAO10 A SET A.GROSS = (A.GROSS_AMT * B.PERCENT_VALUE) 
(SELECT B.PERCENT_VALUE FROM PS_Z_NEW_FY_SPLIT B 
WHERE A.EMPLID = B.EMPLID) 
WHERE A.PAY_END_DT = '09-JUL-2016'; 
+0

C'est le SQL qui a fonctionné: mise à jour PS_HR_TAO10 A set A.GROSS_AMT = (Sélectionnez A.GROSS_AMT * B.PERCENT_VALUE de PS_Z_NEW_FY_SPLIT B où A.EMPLID = B.EMPLID) où A.PAY_END_DT = TO_DATE ('09 -JUL-2016 ',' DD-MON-YYYY ') et EXISTS (Sélectionnez A.GROSS_AMT * B.PERCENT_VALUE de PS_Z_NEW_FY_SPLIT B où A.EMPLID = B.EMPLID); –

Répondre

0

Je pencherais pour la déclaration de fusion:

merge into PS_HR_TAO10 A 
using (select EMPLID, PERCENT_VALUE from PS_Z_NEW_FY_SPLIT) B 
on (A.EMPLID = B.EMPLID) 
when matched then update set 
A.GROSS = A.GROSS_AMT * B.PERCENT_VALUE 
WHERE A.PAY_END_DT = '09-JUL-2016'; 
+0

Encore une fois ... Même ... mais cette fois vous étiez plus rapide :-). Je supprime le mien, – XING

+0

@XING Oui, nous sommes en train de regarder les mêmes questions. Ne vous inquiétez pas je pars bientôt;) – Kacper

+0

Merci, mais je reçois "" Déclaration non valide. Ligne de départ 1. Ligne de fin 6.Erreur dans le fichier de script. Ligne de départ 1. Ligne de fin 6 "Je l'exécute comme SQL, pas comme un script –