7 Replies Latest reply: May 7, 2013 6:01 AM by Willy LEPANTE RSS

    Gestion ou création d'un calendrier

    Willy LEPANTE

      Dans une table, j'ai plusieurs champs date sur lequel j'aimerais faire mes analyses sur 4 années.

       

      J’ai donc les champs suivants :

      MaDate1, MaDate2, MaDate3.

       

      Pour chacun des champs, il faudra effectuer des analyses à l’année, au trimestre et au mois.

      Au final, je me retrouve avec :

      month(MonthEnd(MaDate1)) as  MaDate1_Mois,

      if((left((Right((QuarterEnd(MaDate1)),7)),2))= '03','Q1',

      if((left((Right((QuarterEnd(MaDate1)),7)),2))= '06','Q2',

      if((left((Right((QuarterEnd(MaDate1)),7)),2))= '09','Q3',

      if((left((Right((QuarterEnd(MaDate1)),7)),2))= '12','Q4')))) as  MaDate1_Trimestre,

      right((YearEnd(MaDate1)),4) as MaDate1_Annee,

       

      month(MonthEnd(MaDate2)) as  MaDate2_Mois,

      if((left((Right((QuarterEnd(MaDate2)),7)),2))= '03','Q1',

      if((left((Right((QuarterEnd(MaDate2)),7)),2))= '06','Q2',

      if((left((Right((QuarterEnd(MaDate2)),7)),2))= '09','Q3',

      if((left((Right((QuarterEnd(MaDate2)),7)),2))= '12','Q4')))) as  MaDate2_Trimestre,

      right((YearEnd(MaDate2)),4) as MaDate2_Annee,

       

      month(MonthEnd(MaDate3)) as  MaDate3_Mois,

      if((left((Right((QuarterEnd(MaDate3)),7)),2))= '03','Q1',

      if((left((Right((QuarterEnd(MaDate3)),7)),2))= '06','Q2',

      if((left((Right((QuarterEnd(MaDate3)),7)),2))= '09','Q3',

      if((left((Right((QuarterEnd(MaDate3)),7)),2))= '12','Q4')))) as  MaDate3_Trimestre,

      right((YearEnd(MaDate3)),4) as MaDate3_Annee,

       

      Au final, je voudrais avoir trois listes de sélection qui prendraient en compte mes trois dates

      Une liste avec les années

      Une liste avec les trimestres

      Une liste avec les mois

       

      Merci pour votre aide.

       

      Willy

        • Re: Gestion ou création d'un calendrier
          Almamy DIABY

          Bonjour,

          Pour question de Lisibilité du code on préfère créer une Table Calendrier à part. Regarde le code suivant,ça devrait t'aider.

           

          Table1:

          load

          date(trim(date1),'DD/MM/YYYY') as DATE,

          champ2,

          ....

          ChampN

          From tablesource1;

           

          Table2:

          load

          date(trim(date2),'DD/MM/YYYY') as DATE,

          champ2,

          ....

          ChampN

          From tablesource2;

           

          Table3:

          load

          date(trim(date3),'DD/MM/YYYY') as DATE,

          champ2,

          ....

          ChampN

          From tableSource3;

           

           

          //  ***************  CALENDRIER*******************************************

          DATES_TEMP:

          LOAD distinct date(trim(DATE),'DD/MM/YYYY') as DATE

          RESIDENT tableSource1 WHERE (len(DATE)>0);

           

           

          LOAD distinct date(trim(DATE),'DD/MM/YYYY') as DATE

          RESIDENT tableSource2 WHERE (len(DATE)>0);

           

           

          LOAD distinct date(trim(DATE),'DD/MM/YYYY') as DATE

          RESIDENT tableSource3 WHERE (len(DATE)>0);

           

           

          NoConcatenate

           

           

          DATES:

           

           

          Load distinct date(DATE) as QUERY_DATE

          RESIDENT DATES_TEMP

          ORDER BY KEY_DATE ASC;

           

           

          drop table DATES_TEMP;

           

           

          LET varMinDate = round(Num(Peek('QUERY_DATE', 0,'DATES')));

          LET varMaxDate = round(Num(Peek('QUERY_DATE', -1,'DATES')));

           

           

          TEMPCALENDRIER:

          LOAD $(varMinDate) + rowno() - 1 AS Num,

                     date($(varMinDate) + rowno() - 1) AS TempDate

          AUTOGENERATE $(varMaxDate) - $(varMinDate) + 1;

           

           

           

          CALENDRIER:

          LOAD distinct trim(date(TempDate)) AS DATE,

          Week(TempDate) AS SEMAINE,

          Year(TempDate) AS ANNEE,

          Month(TempDate) AS MOIS,

          Day(TempDate) AS JOUR,

          Weekday(TempDate) AS JOUR_SEMAINE,

          'T' & ceil(month(TempDate) / 3) AS TRIMESTRE,

          MonthName(TempDate) AS MOIS_ANNEE,

          Week(TempDate)&'-'&Year(TempDate) AS SEMAINE_ANNEE

          RESIDENT TEMPCALENDRIER ORDER BY TempDate ASC;