我已将它放在数据过滤器表达式中,并在运行报表时导致错误。我在这里尝试实现的是,当Force Expired列的Force值为Force时,对其他两列的操作(如[Policy Expiration Date]和[Policy Effective Date])应该使用对抗的逻辑current_date。
case when [Force Expired] = 'Inforce' then ([Policy Expiration Date] >= current_date and [Policy Effective Date] <= current_date) else end
答案 0 :(得分:0)
当您使用案例时,您必须指定满足要求时要执行的操作 - 不要给出其他条件。 就像是: [bla] =&#34; foo&#34;那么&#34; return_value&#34;别的&#34;没什么&#34;结束 记住 - 你在数据项中计算出的vlue所写的内容是否被翻译成sql,而这正是它在sql中的表现...
答案 1 :(得分:0)
Cognos对过滤器中条件的确切语法很挑剔。出于这个原因,我通常会在过滤器中避免CASE语句。您可以将过滤器转换为以下两种语法之一:
IF ([Force Expired] = 'Inforce')
THEN ([Policy Expiration Date] >= current_date and [Policy Effective Date] <= current_date)
ELSE (1=1)
([Force Expired] = 'Inforce' AND [Policy Expiration Date] >= current_date AND [Policy Effective Date] <= current_date)
OR
[Force Expired] <> 'Inforce'
如果您坚持使用CASE语句,那么我相信您可以在WHEN子句中加上括号并为ELSE提供结果,它应该有效:
CASE
WHEN ([Force Expired] = 'Inforce')
THEN ([Policy Expiration Date] >= current_date AND [Policy Effective Date] <= current_date)
ELSE (1=1)
END
出于某种原因,Cognos坚持使用ELSE子句。