Ich muss einen Bericht erstellen, wo für jede Spalte eine vorherige Spalte vorhanden ist, die den Wert vom Datum 18 Monate zurück vom Datum gibt wird als Eingabe angegeben. Grundsätzlich bekomme ich Daten aus wenigen Spalten in Spotfire
für ein bestimmtes Datum und möchte nur wenige der Spalten zeigen die Ausgabe, die 18 Monate zurück war.Sie müssen berechnete Spalten vom Eingabedatum -18 Monate in Spotfire für die tatsächlichen Spalten erstellen
-Code Summary-
Dies ist der Code, den ich in Spotfire
zu implementieren. In diesem Bericht wird das Datum eines bestimmten einzelnen Tages eingegeben und Spaltenwerte dafür abgerufen. Die Unterabfrage wird für einige der Werte abgerufen und an die Hauptabfrage gesendet. In der Regel enthält dieser Bericht einige gemeinsame Spalten und wenige andere Spalten, die den Wert vom aktuellen Datum und den vorherigen Daten für die gleichen Spalten enthalten. Ich kann alle Spalten aus der Hauptabfrage implementieren, aber brauche Vorschläge, um Werte für die vorherigen Spalten zu erhalten, die in Spotfire
berechnet werden oder trotzdem als Oracle view
zu implementieren, da wir nur eine Eingabe für die Hauptabfrage erhalten und die Unterabfrage abziehen wird statisch nicht von Tagen/Monat [in diesem Fall seiner 18 Monate]
Codebeispiel: -
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)
Können Sie den Datensatz teilen – scsimon
geben Sie mir etwas Zeit, wird versuchen, eine Probe eine ähnliche wie die tatsächliche zu teilen – direwolf