J'ai un tableau ci-dessous - AccountDetailsMise à jour/Fusionner une table à l'aide sous requête dans Oracle
Account_No Request_Id Issue_date Amount Details
1 567 20150607 $156 Loan
2 789 20170406 $765 Personal
3 20170216 $897
3 987 20160525 $345 Loan
3 456 20170112 $556 Loan
4 234 20171118 $987 Loan
Je dois mettre à jour le request_id où id demande est nulle ou Détails est nulle pour le compte ci-dessous logique. Nécessité d'obtenir le dernier ID de demande pour le compte en fonction de la date de publication et de mettre à jour l'ID de demande (dernier ID de demande + 1) WHERE request_id est nul ou les détails sont NULL. Ainsi, le résultat devrait être
Account No Request_Id Issue_date Amount Details
1 567 20150607 $156 Loan
2 789 20170406 $765 Personal
3 457 20170216 $897
3 987 20160525 $345 Loan
3 456 20170112 $556 Loan
4 234 20171118 $987 Loan
J'ai essayé avec la requête ci-dessous
MERGE INTO AccountDetails a
USING (select Request_Id + 1,ROW_NUMBER() OVER (PARTITION BY B.Account_No
ORDER BY B.Issue_date desc) AS RANK_NO
from AccountDetails) b
ON (a.Account_No = b.Account_No AND a.DETAILS IS NULL)
WHEN MATCHED THEN
UPDATE SET a.Request_Id = b.Request_Id
WHERE B.RANK_NO = 1;