Ниже приведен фрагмент кода в представлении приложения, но для получения результата требуется много времени, а через 2-3 часа - проблема с табличным пространством.Какой лучший способ написать ниже запрос.Поскольку я должен использовать существующий код для этого требования.
Ниже приведено требование.
Мы должны проверить последние 30 дней с даты последнего выписки на счет, используя следующую формулу
if ((sum of credits for 30 days from the latest statement date w.r. to account/sum debits for 30 days from the latest statement date w.r. to account)-sum debits for 30 days from the latest statement date w.r. to account)>0 then YES else NO
Мой взгляд
CREATE OR REPLACE FORCE VIEW <View_Name> AS
SELECT <List of columns names>,
(SELECT
CASE WHEN ((SUM(DECODE(CR_DR_FLAG,'C',TRANSACTION_AMT,NULL))/DECODE(SUM(DECODE(CR_DR_FLAG,'D',TRANSACTION_AMT,NULL)),0,1))
-SUM(DECODE(CR_DR_FLAG,'D',TRANSACTION_AMT,NULL)))>0 THEN 'YES' ELSE 'NO' END
ROLL_C_D FROM SWIFT_TRANSACTION_DETAILS WHERE CLEAN_SWIFT_ACCT = T_ROLL.SWIFT_ACCT
AND CURRENCY_CODE= T_ROLL.CUR AND STATEMENT_DATE BETWEEN (T_ROLL.STATEMENT_DATE_LATEST-30) AND T_ROLL.STATEMENT_DATE_LATEST
GROUP BY CLEAN_SWIFT_ACCT,CURRENCY_CODE ) CR_ACTIVITY_FLAG
--My Code End
FROM
(SELECT <List of columns names>
FROM TEMP_BATS_METRIC_REPORT
UNION ALL
SELECT <List of columns names>
FROM VIEW_BATS_METRICS_REPORT
WHERE MATCHING_STATUS IN('MATCHED TO ARA RECON','Unmatched')
) T_ROLL --alias give to 2 tables union all
ORDER BY MATCHING_STATUS,
TO_NUMBER(ACT_ID),
ACCOUNT_MATCHING_TYPE,
SWIFT_ACCT;