ORA 01797-运算符必须后跟任何或所有

时间:2014-04-29 22:59:32

标签: reporting-services oracle11g subquery

我正在子查询的where子句中测试这样的条件。但我得到错误"运营商必须跟随任何或所有"当我执行SSRS报告时。

dbase是oracle。我需要在参数中使用IN,因为SSRS报告中的参数是多值的。我正在使用一个单独的函数来生成日期:P_Date。 我需要检查这个日期是=还是<或者为null。所有这三个条件都需要进行测试。

where 
trunc(tt.fyh_fecha) IN (:P_Date) OR
trunc(tt.fyh_fecha) <(:P_Date) OR 
trunc(tt.fyh_fecha) IS NULL AND
tc.cod_tree = 'blue' AND
tt.color_flower = 'pink'

1 个答案:

答案 0 :(得分:0)

这似乎没有直接可能 - 您正在尝试使用包含针对&lt;的值的数组的参数。只需要一个值的运算符。你的设计对我来说没有任何合理意义(&lt; =多个日期?),但无论如何......

我会在日历/日期维度表中添加一个联接,我将应用IN (:P_Date)条件将日期值列表作为故意交叉联接。

然后我会替换:

trunc(tt.fyh_fecha) IN (:P_Date) OR

trunc(tt.fyh_fecha) <(:P_Date) OR

使用:

trunc(tt.fyh_fecha) <= Dim_Date.Date_Value