我想每周每个文件存储数据。
实际上我们在第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
;
谢谢
答案 0 :(得分:0)
首先,如果您想每周存储数据,则需要按周对数据进行分组。我不知道您是否这样做,但我想您是这样做的。
然后,您需要每周进行一次循环掷球。我举个例子:
最近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)
您需要将数据汇总到一周级别,并使用“ where”子句中日期的星期数循环抛出该集合。
在示例中,我创建了2个变量来在实际一周和6周之前进行循环。