İstediğim sonuçları elde etmek için daha önce Full Outer Joins'i kullandım, ama belki de konsepti tam olarak anlamıyorum çünkü basit bir birleşimin ne olacağını başaramıyorum.
Her biri 2 alanlı 2 tablo (ki ben t1 ve t2 diyeceğim) var:
t1
Policy_Number Premium
101 15
102 7
103 10
108 25
111 3
t2
Policy_Number Loss
101 5
103 9
107 20
Ne yapmaya çalışıyorum, hem tablolardan hem de Policy_Number prim ve kayıp toplamı elde etmektir. Ben kullanıyorum kodu:
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
Yukarıdaki kod doğru toplamları döndürür ancak "NULL" ilke_sayısı altında ilke_sayısı eşleşmesinin olmadığı tüm kayıtları gruplandırır.
Sonucumun böyle görünmesini istiyorum
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
vb.....
Aşağıda gösterildiği gibi bir NULL ilke numarası gösteren bir sonuç istemiyorum (NULL ilke_numarası gibi bir şey olmadığı için. Bu sadece her iki tablodaki ilke_numarası eşleşmediğinde toplamdır)
Policy_Number Prem_Sum Loss_Sum
NULL 35 NULL
Eğer t1.policy_number yerine t2.policy_number ile seçip gruplandırırsam, aşağıdaki gibi bir kayıt alırım.
Policy_Number Prem_Sum Loss_Sum
NULL NULL 20
Yine, Prem_Sum altında veya Loss_sum altında NULL görmeyi umursamıyorum ama Policy_Number altında NULL istemiyorum. Sonuçlarımın şöyle bir şey olmasını isterim
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
vb .....
Tam dış birleşimin bunu başaracağını düşündüm ama sanırım bir şey eksik. Belki de seçebilir ve alt sorgu olarak t1.policy_number ve t2.policy_number tarafından grup ve sonra belki dış sorguda bir şey veya bir şey yapabilir ??? Bunun bu kadar karmaşık olması gerektiğini düşünmüyorum.
Herhangi bir fikir veya öneriniz var mı?