Skip to content

Instantly share code, notes, and snippets.

@flash-gordon
Created June 9, 2016 19:38
Show Gist options
  • Save flash-gordon/93267291ba4f24c8456d4a97a3c9cdcc to your computer and use it in GitHub Desktop.
Save flash-gordon/93267291ba4f24c8456d4a97a3c9cdcc to your computer and use it in GitHub Desktop.
MERGE INTO TT_PAY_REQ_SERVICES T
USING (
SELECT T.N_LINE_ID,
T.N_AMOUNT_REQ -
GREATEST(LEAST(
T.N_AMOUNT_REQ,
A.N_AVAILABLE_AMOUNT -
COALESCE(
SUM(T.N_AMOUNT_REQ)
OVER(PARTITION BY T.N_ACCOUNT_ID
ORDER BY T.N_ACCOUNT_ID, T.N_LINE_NO
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 0)), 0) N_AMOUNT_REQ,
T.N_AMOUNT_REC -
GREATEST(LEAST(
T.N_AMOUNT_REC,
A.N_AVAILABLE_AMOUNT -
COALESCE(
SUM(T.N_AMOUNT_REC)
OVER(PARTITION BY T.N_ACCOUNT_ID
ORDER BY T.N_ACCOUNT_ID, T.N_LINE_NO
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 0)), 0) N_AMOUNT_REC
FROM TT_PAY_REQ_SERVICES T
INNER JOIN TT_ACCOUNTS_FOR_PAY_REQUESTS A
ON A.N_ACCOUNT_ID = T.N_ACCOUNT_ID
AND A.N_BATCH_NO = T.N_BATCH_NO
WHERE T.N_BATCH_NO = num_N_BATCH_NO
ORDER BY T.N_ACCOUNT_ID, T.N_LINE_NO) S
ON (T.N_LINE_ID = S.N_LINE_ID)
WHEN MATCHED THEN
UPDATE
SET T.N_AMOUNT_REQ = S.N_AMOUNT_REQ,
T.N_AMOUNT_REC = S.N_AMOUNT_REC;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment