Oracle 需要从输入日期开始创建计算列-在Spotfire中为实际列创建18个月
我需要创建一个报告,其中每个列都有一个前一列,该列将给出从输入日期起18个月后的值。基本上,我从几个列中获取特定日期的数据到Spotfire中,并希望其中几个列显示18个月前的输出 代码摘要- 这是我必须在Spotfire中实现的代码。此报表接受特定单日日期的输入,并获取该日期的列值。子查询获取少数值,并将它们发送到主查询。通常,此报告具有 少数公共列和少数其他列具有相同列的当前日期和以前日期的值。我可以实现主查询中的所有列,但需要建议获取Spotfire中计算的前几列的值,或者作为Oracle视图实现,因为主查询将只获得一个输入,子查询将扣除静态天数/月[在本例中为18个月] 代码示例:-Oracle 需要从输入日期开始创建计算列-在Spotfire中为实际列创建18个月,oracle,spotfire,Oracle,Spotfire,我需要创建一个报告,其中每个列都有一个前一列,该列将给出从输入日期起18个月后的值。基本上,我从几个列中获取特定日期的数据到Spotfire中,并希望其中几个列显示18个月前的输出 代码摘要- 这是我必须在Spotfire中实现的代码。此报表接受特定单日日期的输入,并获取该日期的列值。子查询获取少数值,并将它们发送到主查询。通常,此报告具有 少数公共列和少数其他列具有相同列的当前日期和以前日期的值。我可以实现主查询中的所有列,但需要建议获取Spotfire中计算的前几列的值,或者作为Oracle
select st.x1,
cs.x2 ,
sp.x3, sp.x4,
el.x5 current_zxc, --New data 2
el.xxxx current_zvvxx, --New data 3
por.x6 current_zczxc, --New data 4
el.x7 current_sdcvzv, --New data 5
prev_yr_data.prev_1 previous_czzxczxc,
prev_yr_data.prev_2 previous_xcvv,
prev_yr_data.prev_3 previous_zcvzxz,
prev_yr_data.prev_4 PREVIOUS_czxcvzxv,
prev_yr_data.prev_5 previous_vvvxcvxc,
prev_yr_data.prev_6 previous_zxvxvv,
from table1 cs
inner join table2 usr on cs.xxx = usr.zzzzz
inner join table3 emp on emp.xxx = usr.zzzzz
inner join table4 gbst on cs.xxxs = gbst.zzzzz
inner join table5 sp on cs.xxx = sp.zzzzz
inner join table6 st on sp.xxx = st.zzzzz
inner join table7 ol on ol.xxx = cs.zzzzz
inner join table8 el on el.xxx = ol.zzzzz
inner join table9 spt on trim(upper(el.xxxx)) = trim(upper(spt.xxx))
inner join table10 por on
por.xxx = el.xxxx and
por.xxxx = el.xxxx and
por.xxxx = cs.zzzzz
inner join
(select st.x1,
cs.zzzzz case_zzzzz,
cs.x2 prev_4,
sp.zzzzz ,
sp.x3, sp.x4,
spt.zzzzz ,
spt.xxx prev_1, --Old data 1
el.x5 prev_2, --Old data 2
el.x6 prev_3, --Old data 3
por.xxxx prev_5, --Old data 4
el.x7 prev_6 --Old data 5
from table1 cs
inner join table5 sp on cs.xxxx = sp.zzzzz
inner join table6 st on sp.xxxx = st.zzzzz
inner join table7 ol on ol.xxxx = cs.zzzzz
inner join table8 el on el.xxxxx = ol.zzzzz
inner join table9 spt on trim(upper(el.x_part_name)) = trim(upper(spt.x_part_number))
inner join table10 por on
por.xxx = el.xxxx and
por.xxxx = el.xxxx and
por.xxxx = cs.zzzzz
where ol.date_time between add_months(to_date('date_input','mm/dd/yyyy'), -18) and to_date('date_input','mm/dd/yyyy')
) prev_yr_data on
sp.zzzzz = prev_yr_data.zzzzz and
spt.zzzzz = prev_yr_data.zzzzzz
where ol.date_time >= to_date('date_input','mm/dd/yyyy') and ol.date_time < ( to_date('date_input','mm/dd/yyyy') + 1 )
我建议在引入数据集时添加一个转换,以计算未来18个月或过去18个月的日期,以您喜欢的为准。然后,您可以在Spotfire中进行自联接,其中[Date]=[18MonthForward],并引入您想要的相同值列 在“源信息”下查看时,实现此目的的步骤如下所示:
2. Select Insert > Transformations...
Add the transformations:
a. Calculate new column
Name: 18MonthsForward
Expression: DateAdd("month",18,[Date])
3. Select Insert > Columns...
Select 'From Current Analysis'
Source location: Data Table
Automatic update.
Match columns:
Date => 18MonthsForward
Ignore columns:
Date
Select join method: LeftOuterJoin
Treat empty values as equal: False
作为一个循序渐进的指导,您应该:
1选择插入>>转换
2从下拉列表中选择“计算新列”
3键入表达式:DateAddmonth,18,[Date],然后根据您的喜好命名它
4选择插入>>列
5从当前数据中选择,然后选择当前数据表
6加入日期栏和新计算的18个月远期日期栏
7选择您的值列作为新列
附加在数据结果数据表的图像中 你能分享数据集吗?给我一些时间,我会尝试分享一个与实际数据相似的样本