मैंने अपना वांछित परिणाम प्राप्त करने से पहले पूर्ण बाहरी जॉइन का उपयोग किया है, लेकिन शायद मैं पूरी तरह से अवधारणा को नहीं समझ पा रहा हूं क्योंकि मैं एक साधारण जॉइन नहीं कर पा रहा हूं।
मेरे पास 2 टेबल्स हैं, (जो वेल्ल कॉल टी 1 और टी 2 है) प्रत्येक 2 फ़ील्ड्स के साथ:
t1
Policy_Number Premium
101 15
102 7
103 10
108 25
111 3
t2
Policy_Number Loss
101 5
103 9
107 20
मैं जो करने की कोशिश कर रहा हूं, वह दोनों तालिकाओं से प्रीमियम और समसामयिकी का योग है और पॉलिसी_Number भी है। मैं जो कोड उपयोग कर रहा हूं वह है:
select sum(premium) Prem_Sum, sum(Loss) Loss_Sum, t1.policynumber
from t1 full outer join t2 on t1.policynumber = t2.policynumber
group by t1.policynumber
उपरोक्त कोड सही राशि योग लौटाएगा, लेकिन यह उन सभी रिकॉर्डों को समूहित करेगा जहां "NULL" पॉलिसी_number के तहत पॉलिसी_नंबर मैच नहीं है।
मैं अपने परिणाम को इस तरह देखना चाहूंगा
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
आदि.....
मैं ऐसा परिणाम नहीं चाहता जो नीचे दिखाए गए अनुसार NULL policy_number दिखाता हो (क्योंकि NULL नीति_number जैसी कोई चीज़ नहीं है। यह तब के लिए कुल है जब दोनों तालिका से policy_number मेल नहीं खाता):
Policy_Number Prem_Sum Loss_Sum
NULL 35 NULL
अगर मैं t1.policy_number के बजाय t2.policy_number सेलेक्ट करता हूं और समूह करता हूं, तो मुझे एक रिकॉर्ड के रूप में नीचे कुछ मिलता है।
Policy_Number Prem_Sum Loss_Sum
NULL NULL 20
फिर से, मुझे प्रेम_सुम के तहत या लॉस_सुम के तहत NULL को देखने में कोई आपत्ति नहीं है, लेकिन मैं पॉलिसी के तहत NULL नहीं चाहता हूं। मैं चाहूंगा कि मेरे परिणाम कुछ इस तरह हों
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
ect .....
मुझे लगा कि पूरा बाहरी जुड़ाव इसे पूरा करेगा लेकिन मुझे लगता है कि मुझे कुछ याद आ रहा है। मैं सोच रहा था कि शायद मैं t1.policy_number और t2.policy_number दोनों को चुनकर एक उप क्वेरी के रूप में समूह बना सकता हूं और फिर शायद बाहरी क्वेरी या किसी चीज़ में CASE करूं ??? मुझे नहीं लगता कि यह इस जटिल होना चाहिए।
कोई विचार या सलाह?