我之前曾使用“完全外部联接”来获得所需的结果,但也许我不完全理解该概念,因为我无法完成应该是简单联接的工作。
我有2个表(分别称为t1和t2),每个表有2个字段:
11
Policy_Number Premium
101             15
102              7
103             10
108             25
111              3t2
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或其他操作?我不认为应该这么复杂。
有什么想法或建议吗?