Раніше я використовував Full Outer Joins, щоб отримати бажані результати, але, можливо, я не повністю розумію цю концепцію, оскільки я не в змозі досягти того, що має бути простим приєднанням.
У мене є 2 таблиці (які я називаю t1 і t2) з 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
Що я намагаюся зробити - це отримати суму премій та суму втрат з обох таблиць, а також Policy_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" policy_number.
Я хотів би, щоб мій результат виглядав таким чином
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
тощо ...
Я не хочу, щоб результат показував NULL policy_number, як показано нижче (оскільки немає такого поняття, як NULL policy_number. Це просто загальна сума, коли policy_number з обох таблиць не збігається):
Policy_Number Prem_Sum Loss_Sum
NULL 35 NULL
Якщо я виберу і групую по t2.policy_number замість t1.policy_number, я отримаю щось на зразок нижче як запис.
Policy_Number Prem_Sum Loss_Sum
NULL NULL 20
Знову ж таки, я не проти бачити NULL під Prem_Sum або під Loss_sum, але я не хочу NULL під Policy_Number. Я хотів би, щоб мої результати були чимось подібними
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
ест .....
Я думав, що повне зовнішнє з'єднання це здійснить, але я думаю, що мені щось не вистачає. Я думав, може, я міг би вибрати та об'єднати групи t1.policy_number та t2.policy_number як підзапит, а потім, можливо, зробити CASE у зовнішньому запиті чи щось таке ??? Я не думаю, що це повинно бути таким складним.
Якісь ідеї чи поради?