是否有更有效的方法来编写这种 case when 语句,以免有那么多“when c.clm_its.host.cd IN...”。我认为可以在主案例中添加嵌套案例。这是一个可行的选择吗?
, CASE
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND c.clm_sor_cd <> '808' THEN ''
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('040','540','041','044','046') THEN 'CA'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('051','551','050','550','052') THEN 'CO'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('266','766','265','765','267') THEN 'NV'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('131','631','132','130','630') THEN 'IN'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('161','661','162','160','660') THEN 'KY'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('748','749','241','741','248') THEN 'MO'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('330','830','329','332','834') THEN 'OH'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('458','454','954','450','950') THEN 'WI'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('425','925','427','429') THEN 'VA'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('254','246','746','308') THEN 'NY'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('102','602','101','601','103') AND ca.prcsg_unit_id IN ('8Y') THEN 'GA'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('062','562','063','563','064') AND ca.prcsg_unit_id IN ('7W','8M') THEN 'CT'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('182','682','183','685','185') AND ca.prcsg_unit_id IN ('7Y') THEN 'ME'
WHEN c.clm_its_host_cd IN ('HOST','JAACL') AND Substr(c.clm_its_sccf_nbr,1,3) IN ('271','771','272','769','269') AND ca.prcsg_unit_id IN ('8D') THEN 'NH'
WHEN cl.clm_sor_cd = '808' AND clp.prov_st_cd IN ('CA', 'CO', 'NV', 'IN', 'KY', 'OH', 'MO', 'WI', 'NH', 'ME', 'CT', 'NY', 'VA', 'GA') THEN clp.prov_st_cd
WHEN cl.clm_sor_cd = '808' AND Left(cl.pn_id,4) = 'SPEC' THEN 'GA'
WHEN cl.clm_sor_cd = '808' AND Left(cl.pn_id,4) = 'HOSP' THEN 'GA'
WHEN cl.clm_sor_cd = '808' AND Left(cl.pn_id,2) IN ('CT','ME','NY','VA','NH','MO','OH','KY','WI') THEN Left(cl.pn_id,2)
WHEN cl.clm_sor_cd = '808' AND Left(cl.pn_id,2) = 'IY' THEN 'IN'
WHEN cl.clm_sor_cd = '808' AND mbu.brnd_desc = 'OTHER' AND ccf.cmpny_st_cd NOT IN ('','NA','UNK') THEN ccf.cmpny_st_cd
WHEN cl.clm_sor_cd = '808' AND mbu.brnd_desc = 'BCC' THEN 'CA'
WHEN cl.clm_sor_cd = '808' AND mbu.brnd_desc = 'CO/NV' THEN 'CO/NV'
WHEN cl.clm_sor_cd = '808' AND mbu.brnd_desc = 'UNICARE' THEN 'UNICARE'
WHEN cl.clm_sor_cd = '808' AND Substr(mbu.brnd_desc,1, 4)='BCBS' THEN Substr(mbu.brnd_desc,5,2)
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '560' THEN 'CT'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '600' THEN 'GA'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '630' THEN 'IN'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '660' THEN 'KY'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '680' THEN 'ME'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '741' THEN 'MO'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '770' THEN 'NH'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '834' THEN 'OH'
WHEN cl.clm_sor_cd = '824' AND c.srvcg_plan_cd = '950' THEN 'WI'
WHEN cl.clm_sor_cd = '823' AND clp.prov_st_cd IN ('IN','KY','OH', 'MO','WI') THEN clp.prov_st_cd
WHEN cl.clm_sor_cd = '823' AND mbu.brnd_desc = 'UNICARE' THEN 'UNICARE'
WHEN cl.clm_sor_cd = '823' AND Substr(mbu.brnd_desc,1, 4)='BCBS' THEN Substr(mbu.brnd_desc,5,2)
WHEN cl.clm_sor_cd = '809' THEN 'NY'
WHEN cl.clm_sor_cd = '869' THEN 'VA'
WHEN cl.clm_sor_cd = '896' AND mbu.brnd_desc = 'BCC' THEN 'CA'
WHEN cl.clm_sor_cd = '896' AND Substr(mbu.brnd_desc,1, 4)='BCBS' THEN Substr(mbu.brnd_desc,5,2)
WHEN cl.clm_sor_cd = '1104' AND clp.prov_st_cd IS NOT NULL THEN clp.prov_st_cd
WHEN cl.clm_sor_cd = '1104' AND mbu.brnd_desc = 'BCC' THEN 'CA'
WHEN cl.clm_sor_cd = '1104' AND Substr(mbu.brnd_desc,1, 4)='BCBS' THEN Substr(mbu.brnd_desc,5,2)
WHEN cl.clm_sor_cd = '1104' AND mbu.brnd_desc = 'Blue LA' THEN 'LA'
WHEN cl.clm_sor_cd = '1104' AND Substr(mbu.mbu_cf_cd,1,2) = 'AG' THEN Substr(mbu.mbu_cf_cd,3,2)
ELSE 'OTH' END AS SERV_PROV_STATE
参见示例
CASE WHEN c.clm_its_host_cd IN ('HOST','JAACL') then
WHEN c.clm_sor_cd <> '808' THEN ''
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('040','540','041','044','046') THEN 'CA'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('051','551','050','550','052') THEN 'CO'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('266','766','265','765','267') THEN 'NV'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('131','631','132','130','630') THEN 'IN'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('161','661','162','160','660') THEN 'KY'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('748','749','241','741','248') THEN 'MO'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('330','830','329','332','834') THEN 'OH'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('458','454','954','450','950') THEN 'WI'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('425','925','427','429') THEN 'VA'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('254','246','746','308') THEN 'NY'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('102','602','101','601','103')
AND ca.prcsg_unit_id IN ('8Y') THEN 'GA'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('062','562','063','563','064')
AND ca.prcsg_unit_id IN ('7W','8M') THEN 'CT'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('182','682','183','685','185')
AND ca.prcsg_unit_id IN ('7Y') THEN 'ME'
WHEN Substr(c.clm_its_sccf_nbr,1,3) IN ('271','771','272','769','269')
AND ca.prcsg_unit_id IN ('8D') THEN 'NH'
ELSE 'OTH' END
WHEN cl.clm_sor_cd = '808' THEN
WHEN clp.prov_st_cd IN ('CA', 'CO', 'NV', 'IN', 'KY', 'OH', 'MO', 'WI', 'NH', 'ME', 'CT', 'NY', 'VA', 'GA') THEN clp.prov_st_cd
WHEN Left(cl.pn_id,4) = 'SPEC' THEN 'GA'
WHEN Left(cl.pn_id,4) = 'HOSP' THEN 'GA'
WHEN Left(cl.pn_id,2) IN ('CT','ME','NY','VA','NH','MO','OH','KY','WI') THEN Left(cl.pn_id,2)
WHEN Left(cl.pn_id,2) = 'IY' THEN 'IN'
WHEN mbu.brnd_desc = 'OTHER' AND ccf.cmpny_st_cd NOT IN ('','NA','UNK') THEN ccf.cmpny_st_cd
WHEN mbu.brnd_desc = 'BCC' THEN 'CA'
WHEN mbu.brnd_desc = 'CO/NV' THEN 'CO/NV'
WHEN mbu.brnd_desc = 'UNICARE' THEN 'UNICARE'
WHEN Substr(mbu.brnd_desc,1, 4)='BCBS' THEN Substr(mbu.brnd_desc,5,2)
ELSE 'OTH' END
WHEN cl.clm_sor_cd = '808'....
... and so on
ELSE 'OTH' END AS SERV_PROV_STATE