繁体   English   中英

使用SQL Oracle BIEE根据用户输入过滤计算列-

[英]Filter a Calculated Column Based on User Input Using SQL Oracle BIEE -

我正在Oracle BIEE(11.1)中创建一个仪表板,并且需要创建基于用户输入的日期间隔列。 例如,用户选择今天的日期,然后该列将基于过滤器为这些值运行计算。 该过滤器将以一年前两年之前的日期为依据,并返回一年前的一年结果。

它位于Oracle BIEE应用程序中,我无权直接更改数据库。 因此,我必须在应用程序方面并进行分析。

以下是“条件”选项卡上“计算所得”列的SQL。 “ SUM(CASE)”工作正常,但是我的过滤器有问题。

FILTER(SUM(CASE WHEN "Violations"."Current status of violation in the
adjudication process" = 'A' OR "Violations"."Current status of violation in 
the adjudication process" = 'D' OR "Violations"."Current status of violation     
in the adjudication process" = 'V' THEN 1 ELSE 0 END) USING
(("Violations"."Violation Date" IN ("Violations"."Violation Date" >=
TIMESTAMPADD(SQL_TSI_MONTH,-24, DATE'@{q1}'))))  

我收到的错误:公式语法无效。 [nQSError:10058]出现一般错误。 [nQSError:43113]从OBIS返回的消息。 [nQSError:27002] <> =>附近:语法错误[nQSError:26012]。有关此错误的更多详细信息,请让系统管理员查看日志。 (HY000)发出SQL:SELECT FILTER(SUM(“违规”时的情况。”“裁定过程中的当前违规状态” =“ A”或“违规”。“裁定过程中的当前违规状态” =“ D”或“违规”。“裁决过程中违规的当前状态” ='V'THEN 1 ELSE 0 END)使用((“违规”。“违规日期” IN(“违规”。“违规日期”> = TIMESTAMPADD( SQL_TSI_MONTH,-24,DATE'')))))来自“ FIC-ECB违规通知”

我是Oracle BI的新手,但知道这应该可行。 有什么建议吗?

我的解决方案:

FILTER(SUM(CASE WHEN "Violations"."Current status of violation in the 
adjudication process" = 'A' OR "Violations"."Current status of violation in     
the adjudication process" = 'D' OR "Violations"."Current status of violation 
in the adjudication process" = 'V' THEN 1 ELSE 0 END) USING 
("Violations"."Violation Date" BETWEEN TIMESTAMPADD(SQL_TSI_MONTH, -18,date     
'@{q1}') AND TIMESTAMPADD(SQL_TSI_MONTH, -6,date '@{q1}')))

我的目标是根据用户输入创建一个期间。 解决方案是在用户变量之前添加前面的“日期”函数,并使用“ BETWEEN”函数代替“ <= / =>”。 我还必须使“ q1”成为变量提示而不是列变量。 单击列时,可以在oracle BI的过滤器部分或编辑公式部分中运行此命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM