我想使用CASE编写SQL查询来报告策略所有者和策略的详细信息。目标是报告' HOME'的政策类型。如果策略所有者具有该类型的策略,或者如果他们没有归属策略则报告下一个可用策略。例如,Sally Powel没有HOME策略类型,因此我应该报告车辆。对于Van Bommel,我们应该报告HOME政策类型,因为他有一个ACTIVE类型的政策。格兰特霍尔特既没有家也没有车辆,所以我应该报告洪水。
POLICY DETAILS
DETAIL_ID POLICY_ID POLICY_TYPE DATE_OF_ISSUE POLICY_STATUS
2000 1 HOME 05/09/2010 CANCELLED
2001 2 VEHICLE 02/03/2012 ACTIVE
2003 3 FLOOD 01/12/2000 ACTIVE
2004 3 HOME 01/12/2009 CANCELLED
2005 2 HOME 03/04/2009 ACTIVE
2006 1 FLOOD 05/09/2010 ACTIVE
POLICY_ID POLICY_OWNER
1 GRANT HOLT
2 SALLY POWELL
3 VAN BOMMEL
答案 0 :(得分:1)
您可以使用复杂的case
逻辑执行此操作。第一个case
位于min()
内,为策略类型分配优先级。第二个是取消它并得到他们的名字。
select pd.policy_owner,
(case min(case policy_type when 'HOME' then 1 when 'VEHICLE' then 2 else 3 end)
when 1 then 'HOME'
when 2 then 'VEHICLE'
when 3 then 'FLOOD'
end)
from owners o join
policydetails pd
on o.policy_id = pd.policy_id
group by pd.policy_owner;