如何循环最近4周的数据

时间:2018-10-22 11:33:23

标签: qlikview

我想每周每个文件存储数据。

实际上我们在第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 :(得分: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周之前进行循环。