У меня возникла проблема с получением отдельной предыдущей даты отчета из моего измерения даты. Мне нужно заполнить 12 предыдущих отчетных дат (отдельных) для данной календарной даты. Эта отчетная дата заселена по деловым правилам caertian. Для instnaceOracle Предварительная дата Запросы
CAL_DATE RPT_DATE
22-Nov-14 24-Nov-14
23-Nov-14 24-Nov-14
24-Nov-14 24-Nov-14
25-Nov-14 25-Nov-14
26-Nov-14 26-Nov-14
27-Nov-14 1-Dec-14
28-Nov-14 1-Dec-14
29-Nov-14 1-Dec-14
30-Nov-14 1-Dec-14
1-Dec-14 1-Dec-14
2-Dec-14 2-Dec-14
3-Dec-14 3-Dec-14
4-Dec-14 4-Dec-14
5-Dec-14 5-Dec-14
6-Dec-14 8-Dec-14
7-Dec-14 8-Dec-14
о/р я ищу,
DAT_DATE_ RPT_DT PRIOR1 PRIOR12 PRIOR3 PRIOR4 PRIOR5 PRIOR6
4-Dec-14 3-Dec-14 2-Dec-14 1-Dec-14 26-Nov-14 25-Nov-14 24-Nov-14 21-Nov-14
3-Dec-14 2-Dec-14 1-Dec-14 26-Nov-14 25-Nov-14 24-Nov-14 21-Nov-14 20-Nov-14
Запрос я использовал для этого
select DAT_DATE_DT,dat_sls_wrk_rpt_dt,Prior1,Prior2,Prior3,Prior4,Prior5,Prior6,Prior7,Prior8,Prior9,Prior10 from (
select DAT_DATE_DT,
dat_sls_wrk_rpt_dt,
lag(dat_sls_wrk_rpt_dt,1)over (partition by DAT_DATE_DT order by dat_sls_wrk_rpt_dt) AS Prior1,
lag(dat_sls_wrk_rpt_dt,2)over (partition by DAT_DATE_DT order by dat_sls_wrk_rpt_dt) AS Prior2,
lag(dat_sls_wrk_rpt_dt,3)over (partition by DAT_DATE_DT order by dat_sls_wrk_rpt_dt) AS Prior3,
lag(dat_sls_wrk_rpt_dt,4)over (partition by DAT_DATE_DT order by dat_sls_wrk_rpt_dt) AS Prior4,
lag(dat_sls_wrk_rpt_dt,5)over (partition by DAT_DATE_DT order by dat_sls_wrk_rpt_dt) AS Prior5,
lag(dat_sls_wrk_rpt_dt,6)over (partition by DAT_DATE_DT order by dat_sls_wrk_rpt_dt) AS Prior6,
lag(dat_sls_wrk_rpt_dt,7)over (partition by DAT_DATE_DT order by dat_sls_wrk_rpt_dt) AS Prior7,
RANK
FROM
(SELECT DISTINCT B.DAT_DATE_DT,
A.dat_sls_wrk_rpt_dt,
dense_rank() over (partition by B.DAT_DATE_DT order by A.dat_sls_wrk_rpt_dt DESC) RANK
FROM EWT_DATE_DIM1 A,
EWT_DATE_DIM1 B
WHERE A.dat_sls_wrk_rpt_dt < B.dat_sls_wrk_rpt_dt
AND B.DAT_DATE_DT in (trunc(sysdate-15),trunc(sysdate-16))
)
WHERE RANK <12)
where RANK=1
ORDER BY 2 DESC
Можно ли думать что-то проще, чем это. Поскольку может быть много дат для исторических нагрузок, и я хочу точно настроить это. Кроме того, мне нужно, чтобы это было сделано в информатике.
Это впечатляющий запрос. Это работает? и эффективна ли она? –