मुझे लगता है कि आपको एक बाहरी जॉइन की आवश्यकता है।
आपके पास अनिवार्य रूप से इस तरह के दो डेटासेट हैं:
Set1: ID VAL Set2: ID Val => Expected Result:
1 10 1 5 1 15
2 20 2 20
3 30 3 30
तो आपको एक राइट आउटर जॉइन चाहिए
आपके SQL के लिए यह होगा:
select e.sol_id
,(sum(CASE WHEN e.INTEREST_IND = 'D' THEN e.AMOUNT_IN_LCY ELSE 0 END)
- sum(CASE WHEN e.INTEREST_IND = 'C' THEN e.AMOUNT_IN_LCY ELSE 0 END)
+ sum(f.AMOUNT_IN_LCY)
) as Difference
from tbaadm.INTEREST_DETAILS e
LEFT OUTER JOIN
tbaadm.CHARGE_DETAILS f
ON E.SOL_ID = F.SOL_ID
group by e.sol_id, f.sol_id;
(+) तालिका को दर्शाता है, जो NULL भी हो सकता है। इसे लिखने का दूसरा तरीका यह होगा:
select e.sol_id
,(sum(CASE WHEN e.INTEREST_IND = 'D' THEN e.AMOUNT_IN_LCY ELSE 0 END)
- sum(CASE WHEN e.INTEREST_IND = 'C' THEN e.AMOUNT_IN_LCY ELSE 0 END)
+ sum(f.AMOUNT_IN_LCY)
) as Difference
from tbaadm.INTEREST_DETAILS e
LEFT OUTER JOIN
tbaadm.CHARGE_DETAILS f
ON E.SOL_ID = F.SOL_ID
group by e.sol_id, f.sol_id;
दूसरा संस्करण SQL मानक के अनुरूप है, जबकि पहला संस्करण (+) केवल Oracle द्वारा समर्थित है।