在Cognos数据项中使用大小写

时间:2015-03-30 19:53:48

标签: cognos-10

我已将它放在数据过滤器表达式中,并在运行报表时导致错误。我在这里尝试实现的是,当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

2 个答案:

答案 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子句。