我有如下表 - AccountDetails更新/合併使用子查詢表在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
我有哪裏請求ID爲空或詳細信息爲空的賬戶下面的邏輯來更新REQUEST_ID。 需要基於發佈日期獲取帳戶的最新請求ID,並且必須更新請求ID(最新請求ID + 1)WHERE request_id爲空或者詳細信息爲空。所以結果應該是
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
我試着用下面的查詢
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;