Как зациклить данные за последние 4 недели - PullRequest
0 голосов
/ 22 октября 2018

Я хочу хранить данные за неделю для каждого файла.

На самом деле мы находимся на неделе 43.

Я хочу, чтобы данные за:

неделя 42 сохранялись в abc_42.qvd

неделя 41 хранится в abc_41.qvd

неделя 40 хранится в abc_40.qvd

неделя 39 хранится в abc_39.qvd

здесьиспользуемый запрос:

SELECT e.cli_id

, seg_rfm, seg_semestres

, 20182 semestre

, decode(reseau,'W','Web','Mag') Canal

, adr_pays pays

, Sum(clients.conv.get_montant(dev_iso_tenue,'EUR',dat_tic,'$$',ca_ttc_dev)) CA_TTC_EUR

, Sum(nb_art) NB_ART

, Sum(Decode(Sign(ca_ttc_dev),1,1,0)) NB_CDE, sysdate dat_maj

FROM clients.tic_entete e

join clients.cli_fiche f on f.cli_id=e.cli_id

join mag_magasins m on m.magasin = e.magasin

join seg_rfm s on s.cli_id = f.cli_id and s.semestre = 20181

WHERE dat_vte between clients.seg.prem_jour(20182) AND promod.ansem_date(201831,7)

GROUP BY e.cli_id

, seg_rfm, seg_semestres

, decode(reseau,'W','Web','Mag')

, adr_pays

;

спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

Прежде всего, если вы хотите хранить данные за неделю, вам нужно сгруппировать данные за неделю. Я не знаю, делали ли вы это, но я полагаю, вы это сделали.

Тогда вынужно петлю бросать каждую неделю.Я делаю пример:

Хранение данных в неделю за последние 6 недель.

LET vWeekStart = Week(Today)-6;
LET vWeekEnd = Week(Today);

FOR i = $(vWeekStart) to $(vWeekEnd)

  DATA:
  LOAD
      Week,
      20182 as Semestre,
      Sum(clients.conv.get_montant(dev_iso_tenue,'EUR',dat_tic,'$$',ca_ttc_dev)) CA_TTC_EUR,
      Sum(nb_art) NB_ART,
      Sum(Decode(Sign(ca_ttc_dev),1,1,0)) NB_CDE,
      Max(sysdate) as dat_maj
  FROM 'Table'
  WHERE Week(dat_vte) = $(i)
  GROUP BY Week
  ;

Next $(i)

Вам нужно объединить ваши данные до уровня недели и выполнить циклустановить с помощью номера недели даты в предложении «где».

В примере я создаю 2 переменные, чтобы сделать цикл между фактической неделей и 6 неделей назад.

...