我之前曾使用“完全外部联接”来获得所需的结果,但也许我不完全理解该概念,因为我无法完成应该是简单联接的工作。
我有2个表(分别称为t1和t2),每个表有2个字段:
11
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
上面的代码将返回正确的总和,但会将“ policy_number”下“ 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
同样,我不介意在Prem_Sum或Loss_sum下看到NULL,但我不希望在Policy_Number下看到NULL。我希望我的结果像
Policy_Number Prem_Sum Loss_Sum
107 NULL 20
111 3 NULL
101 15 5
等等.....
我以为完全外部联接可以完成此任务,但我想我缺少了一些东西。我在想也许我可以选择t1.policy_number和t2.policy_number作为子查询并进行分组,然后在外部查询中执行CASE或其他操作?我不认为应该这么复杂。
有什么想法或建议吗?