Cognos 10中LIKE函数使用问题:如何筛选特定年份的EOM_DATE字段
解决Cognos 10中LIKE函数匹配多个前缀的问题
你遇到的问题其实是Cognos表达式规则的限制:LIKE不能直接接收多个匹配模式,IN也无法和模糊匹配直接结合,STARTS WITH同样只支持单个前缀值。这里给你两种可行的解决方案:
方案一:用OR连接多个LIKE条件
这是最直接的写法,把每个年份前缀的匹配条件用OR串联起来,Cognos完全支持这种逻辑:
[RiskDM2].[ADAV_RISKDATAMART].[EOM_DATE] LIKE '2016%' OR [RiskDM2].[ADAV_RISKDATAMART].[EOM_DATE] LIKE '2017%' OR [RiskDM2].[ADAV_RISKDATAMART].[EOM_DATE] LIKE '2018%'
方案二:提取年份前缀后用IN匹配
因为你的EOM_DATE格式是固定的YYYY_MM,可以直接提取前4位字符(年份部分),然后用IN来匹配指定年份,这种写法更简洁,性能也更优:
SUBSTRING([RiskDM2].[ADAV_RISKDATAMART].[EOM_DATE], 1, 4) IN ('2016', '2017', '2018')
两种方法都能实现你的需求,如果你后续需要匹配的年份更多,方案二的维护性会更好——只需要在IN的括号里添加或删除年份字符串即可。
内容的提问来源于stack exchange,提问作者Marin
相关产品推荐
相关产品推荐

