Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 需要从输入日期开始创建计算列-在Spotfire中为实际列创建18个月_Oracle_Spotfire - Fatal编程技术网

Oracle 需要从输入日期开始创建计算列-在Spotfire中为实际列创建18个月

Oracle 需要从输入日期开始创建计算列-在Spotfire中为实际列创建18个月,oracle,spotfire,Oracle,Spotfire,我需要创建一个报告,其中每个列都有一个前一列,该列将给出从输入日期起18个月后的值。基本上,我从几个列中获取特定日期的数据到Spotfire中,并希望其中几个列显示18个月前的输出 代码摘要- 这是我必须在Spotfire中实现的代码。此报表接受特定单日日期的输入,并获取该日期的列值。子查询获取少数值,并将它们发送到主查询。通常,此报告具有 少数公共列和少数其他列具有相同列的当前日期和以前日期的值。我可以实现主查询中的所有列,但需要建议获取Spotfire中计算的前几列的值,或者作为Oracle

我需要创建一个报告,其中每个列都有一个前一列,该列将给出从输入日期起18个月后的值。基本上,我从几个列中获取特定日期的数据到Spotfire中,并希望其中几个列显示18个月前的输出

代码摘要-

这是我必须在Spotfire中实现的代码。此报表接受特定单日日期的输入,并获取该日期的列值。子查询获取少数值,并将它们发送到主查询。通常,此报告具有 少数公共列和少数其他列具有相同列的当前日期和以前日期的值。我可以实现主查询中的所有列,但需要建议获取Spotfire中计算的前几列的值,或者作为Oracle视图实现,因为主查询将只获得一个输入,子查询将扣除静态天数/月[在本例中为18个月]

代码示例:-

 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选择您的值列作为新列


附加在数据结果数据表的图像中

你能分享数据集吗?给我一些时间,我会尝试分享一个与实际数据相似的样本