filter - Report Studio 过滤器中的 CASE 语句
问题描述
CASE
我在 Report Studio 过滤器(在 DB2 上运行的 Cognos 8)中编写了以下语句:
CASE
WHEN (
_WEEK_OF_YEAR(?paramDate?) > _WEEK_OF_YEAR(_ADD_MONTHS(?paramDate?; -3))
)
THEN (
[BusinessView].[QueryItem].[Week] <= _WEEK_OF_YEAR(?paramDate?)
AND [BusinessView].[QueryItem].[Week] >= _WEEK_OF_YEAR(_ADD_MONTHS(?paramDate?; -3))
AND [BusinessView].[QueryItem].[Year] = _YEAR(?paramDate?)
)
ELSE (
([BusinessView].[QueryItem].[Week] <= _WEEK_OF_YEAR(?paramDate?)
AND [BusinessView].[QueryItem].[Year] = _YEAR(?paramDate?))
OR ([BusinessView].[QueryItem].[Week] >= _WEEK_OF_YEAR(_ADD_MONTHS(?paramDate?; -3))
AND [BusinessView].[QueryItem].[Year] = _YEAR(_ADD_MONTHS(?paramDate?; -3)))
)
END
但我得到了错误XQE-PLN-0312: Filter expressions must evaluate to Boolean
。请注意,WHEN
andTHEN
和ELSE
all下的表达式的计算结果为布尔值。此外,这些表达式在单独放入过滤器时都有效。所以我认为问题在于 CASE 语句本身。另请注意,我CASE
在其他报告中编写了其他过滤器,它们按我预期的方式工作。因此,我怀疑日期函数与CASE
.
我找到了这个答案,但它并没有解决问题:正如你在我的代码中看到的那样,我已经把所有的括号都放好了。
请不要建议我避免使用该CASE
语句并单独使用 AND 和 OR;这实际上可行,但我想了解如何使其CASE
正常工作。
解决方案
不需要任何 [if] 或 [case] 语句。只需使用逻辑运算符编写过滤条件。
推荐阅读
- python - 是否有等效于计时器的张量流操作来测量经过的时间?
- c - 函数指针调用的函数的意外返回值
- javascript - 承诺不返回 [node.js]
- c - 在 Look-and-say 序列中复制数组时出现问题
- r - 连接周期以获得时间序列,同时针对不同的起点
- laravel-5 - Laravel-缺少必要的参数
- c# - NSubstitute 在模拟的子类上引发事件
- javascript - 获取对 ajax 事件中单击的按钮的引用
- javascript - ASP.NET MVC 中的参数值未定义错误
- dataset - 如何在二进制中使用带有“计数”的 mscoco stuff 数据集?