OBIEE - 在列公式中使用 "IN" & "NOT IN"

OBIEE - Using "IN" & "NOT IN" within Column Formula

如果可以的话,我想在这里寻求帮助。

我有一个可变仪表板提示,将其放在仪表板上时可用于 select 多个站点。这个变量叫做 V_SITES。它的列表是使用 SQL 语句构建的,该语句按预期运行。

我已将以下内容输入到列公式中。

sum(Case
When "Folder_Heading"."SITES" IN (@{V_SITES}{'Site1','Site2','Site3'})
Then 1
Else 0
End)

当我不分配变量时,这工作得很好。 但是,一旦我分配变量就说 ('Site1','Site2','Site3').

失败,并显示以下消息。

Error Codes: OAMP2OPY:OPR4ONWY:U9IM8TAC:U9IM8TAC:U9IM8TAC:U9IM8TAC:OI2DL65P:OI2DL65P

SQL Issued: SELECT sum(Case When "Folder_Heading"."SITES" IN (Site1,Site2,Site3) Then 1 Else 0 End) FROM "Test_Cube"

我注意到它丢失了所有重要的引用(Site1、Site2、Site3)...如果这是导致问题的原因,我不明白为什么会这样,因为我已经告诉 V_SITES成为文本。

请帮忙!

非常感谢

P

EDIT: After loads of testing, I'm fairly confident that the problem is Oracle is not wrapping my text in single quotes when building the sql string... Just need to figure out how to make it...

.

确定这是一个 Oracle 错误...

这是我的解决方法,以防其他人遇到此问题...但是,如果有更好的解决方法或修复方法,我很乐意得到纠正!

问题是当 OBIEE 构建 SQL 字符串时,它没有文本限定变量。 因此,我通过修改参数中的可用值列表来自己对其进行文本限定。

SELECT DISTINCT CHAR(39) || "TEST_CUBE"."FOLDER_HEADING"."SITES" || CHAR(39) s_1 FROM "TEST_CUBE" ORDER BY 1 ASC

唯一烦人的是我现在在每个值的开头和结尾都有 '。

希望这对其他人有帮助。

结果我遇到了同样的问题,虽然 Shakey 的解决方案有效,但真正的解决方案是在公式中使用 ['@'](来自 Oracle 技术支持:Formula Syntax to Populate Multi-Select表示变量(文档 ID 2063624.1))

sum(Case
When "Folder_Heading"."SITES" IN (@{V_SITES}['@']{'Site1','Site2','Site3'})
Then 1
Else 0
End)