Oracle Discoverer:FIRST_VALUE在CASE中不起作用

时间:2015-06-04 18:02:21

标签: sql oracle oracle10g business-intelligence

首先,请允许我在前言中说我正在使用称为“Discoverer”的Oracle BI工具,并且无法直接进行SELECT查询。我写这是一个计算。我无权访问管理员版本,无法编辑当前功能。但是,仍然欢迎这种建议。

我已经浏览过互联网,无法想出这一点。在发现者中,我有一个函数将多个记录(正是我想要的)拉到2015年6月11日的日期,如下所示:

FIRST_VALUE(Sla Due Date) OVER(PARTITION BY Vw Research Sla.Loan Id  ORDER BY  Sla Type )

但是,当我将此函数插入​​CASE WHEN THEN THEN函数时,它不会返回一个值(它返回null而不是FIRST_VALUE值),如下所示:

CASE WHEN Contract Type IN ('Recon Contract') AND State IN ('GA') 
THEN TRUNC(Static OOC Date)-35 

WHEN Contract Type IN ('Recon Contract') 
THEN TRUNC(Static OOC Date) 

WHEN Contract Type IN ('Assignment Contract') 
THEN FIRST_VALUE(Sla Due Date) OVER(PARTITION BY Vw Research Sla.Loan Id ORDER BY  Sla Type )

ELSE TRUNC(Sla Due Date) END

我尝试用计算名称替换CASE语句中的FIRST_VALUE,而不是使用直接分析函数,它仍然给出一个空值

CASE WHEN Contract Type IN ('Recon Contract') AND State IN ('GA') THEN TRUNC(Static NTC OOC Date)-35 WHEN Contract Type IN ('Recon Contract') THEN TRUNC(Static NTC OOC Date) WHEN Contract Type IN ('Assignment Contract') THEN **mSLA** ELSE TRUNC(Sla Due Date) END

更新:我与我的一家公司DBA进行了交谈,他们将SQL Inspector中的代码插入到Dell的TOAD for Oracle中,并输出数据。这似乎只是Discoverer如何在CASE语句中编译分析函数的问题。对此或其他任何人的任何建议都有类似的问题吗?

1 个答案:

答案 0 :(得分:0)

FIRST_VALUE计算应该在Discoverer Administrator中添加到文件夹中。 Discoverer的问题是它无法正确确定CASE语句所需的FIRST_VALUE数据类型。

10年以上Oracle Discoverer经验。