我的OBIEE报告中有两个不同日期的一组值:
------------------------------------------------------------------
Option Date Value
------|---------|-------
OPT1 Date 1 5
OPT1 Date 2 2
OPT2 Date 1 9
OPT2 Date 2 1
OPT3 Date 1 7
OPT3 Date 2 13
OPT4 Date 1 5
OPT4 Date 2 6
我希望获得各组日期之间的值差,并以以下格式显示数据,并按选项分组:
Option Date Diff
Date 1 Date 2
------|--------|--------|-------
OPT1 5 2 3
OPT2 9 1 8
OPT3 7 13 -6
OPT4 5 6 -1
可以使用Pivot处理Date部分,但是我无法找到现在的透视列之间的区别。
我相信,如果为一个日期集找到两个值之间的差异(如下所示),然后对其进行透视,则可能会成功,但我找不到一组差异。
Option Date Value Diff
-------|---------|-------|-------
OPT1 Date 1 5 null
OPT1 Date 2 2 3
OPT2 Date 1 9 null
OPT2 Date 2 1 8
OPT3 Date 1 7 null
OPT3 Date 2 13 -6
OPT4 Date 1 5 null
OPT4 Date 2 6 -1
感谢您的帮助。
谢谢, 朱奈德
答案 0 :(得分:0)
您可以引用数据透视子句生成的列并使用它们进行计算。假设您有一些键值链接日期1和2的值对,则可以执行以下操作:
-- CTE for sample data, with made-up keys
with your_table (some_key, some_date, value) as (
select 1, date '2019-04-01', 5 from dual
union all select 1, date '2019-04-15', 2 from dual
union all select 2, date '2019-04-01', 9 from dual
union all select 2, date '2019-04-15', 1 from dual
union all select 3, date '2019-04-01', 7 from dual
union all select 3, date '2019-04-15', 13 from dual
union all select 4, date '2019-04-01', 5 from dual
union all select 4, date '2019-04-15', 6 from dual
)
-- actual query
select some_key, date1, date2, date1 - date2 as diff
from your_table
pivot (max(value) for some_date in (date '2019-04-01' as date1, date '2019-04-15' as date2))
order by some_key;
SOME_KEY DATE1 DATE2 DIFF
---------- ---------- ---------- ----------
1 5 2 3
2 9 1 8
3 7 13 -6
4 5 6 -1
在date1 - date2 as diff
表达式中,date1
和date2
是枢轴的名称/别名。通常,您无法在定义它的同一级查询中使用列别名,但可以通过透视操作来摆脱它。
答案 1 :(得分:0)
好的,我想我得到了按选项进行按行减法的解决方案
值-LAG(VALUE,1,NULL)超过(按选项划分或按选项划分)
但是,由于某些限制,我无法在OBIEE中使用DB函数。我想学习一种不涉及使用DB函数(例如LAG / LEAD)的解决方案。