使用多分支CASE WHEN为何仅返回BOOLEAN值?期望返回THEN指定内容
问题解决:CASE WHEN返回布尔值而非指定内容
你的SQL里Value列的写法有误:你写了rtw.typecode = CASE ... END,这是在做相等性判断——把原typecode字段和CASE语句的结果做对比,所以返回的是布尔值(True/False),而不是你期望的CASE语句中THEN后的文本内容。
另外注意最后两个条件用了=匹配带%的字符串,SQL里=是精确匹配,%会被当作普通字符处理,应该改用LIKE才能实现模糊匹配。
修正后的SQL代码如下:
--with loan as ( SELECT DISTINCT rtw.identifierdimsk ,lmmf.milestonesk ,lmd.groupname ,rtw.typecode ,rtw.campaignname ,rtw.partnername ,rtw.sourcename ,lmmf.date ,CASE WHEN rtw.typecode = 'PROS' THEN 'Prospect' WHEN rtw.typecode = 'CARI' THEN 'Deluxe' WHEN rtw.typecode IN ('CARIC', 'CTE') THEN 'CSignal' WHEN rtw.typecode = 'RMT' THEN 'Pre Pull' WHEN rtw.typecode IN ('90','90PLUS','C90','C90PLUS','BP','ELO','AUTO','POP') THEN 'In-process' WHEN rtw.typecode LIKE 'XU3%' THEN 'U3' WHEN rtw.typecode LIKE '%CT%' THEN 'Misc' END AS Value FROM rtal_winner rtw INNER JOIN one_fact lmmf ON lmmf.identifierdimsk = rtw.identifierdimsk INNER JOIN one_dim lmd ON lmd.milestonesk = lmmf.milestonesk AND lmmf.date >= '2022-10-25'
内容的提问来源于stack exchange,提问作者Data Manliness
相关产品推荐
相关产品推荐

