2 Replies Latest reply: Jul 28, 2015 8:13 AM by Samuel LESOURD RSS

    avant dernière date

    Samuel LESOURD

      Bonjour, j'ai une table qui contient une liste d'individu venus passer des examens de santé.

      Chaque individu peut avoir suivi un ou plusieurs examens de santé.

      J'aimerais trouver la date de l'avant dernier examen de santé.

      Avec Above, j'obtient la liste de tous les examen avec la date de l'examen récent (DATE_EXAMEN) et tous les examens précédents (DATE_EXAMEN_PRECEDENT).

           

      NINDNTIDATE_EXAMENDATE_EXAMEN_PRECEDENT
      2346378501678805/01/201510/06/1997
      2346378501678805/01/201514/02/2003
      2346378501678805/01/201524/07/2009
      2346378501678805/01/201506/08/2010
      2346378501678805/01/201520/09/2011
      2346378501678805/01/201516/10/2012
      2346378501678805/01/201503/12/2013
      2346378501678805/01/201505/01/2015

       

      Or j'aimerais ne récupérer qu'une seule ligne par individus, avec la date du dernier examen (le plus récent donc) et la date de l'examen précédent.

      En passant par un load en 2 temps, j'obtient bien ce que je veux, mais comment puis je faire en une passe à l'aide des fonction prvious ou peek ?

       

      Pour le moment, peek et previous dans le load mais ces fonctions me renvoient l'avant dernière date d'examen de toute la table.

        • Re: avant dernière date
          Robert Mika

          See below:

          Data:

          load *

          inline [

          Nind,NTI,DATE_EXAMEN, DATE_EXAMEN_PRECEDENT

          2346378, 5016788, 05/01/2015, 10/06/1997

          2346378, 5016788, 05/01/2015, 14/02/2003

          2346378, 5016788, 05/01/2015, 24/07/2009

          2346378, 5016788, 05/01/2015, 06/08/2010

          2346378, 5016788, 05/01/2015, 20/09/2011

          2346378, 5016788, 05/01/2015, 16/10/2012

          2346378, 5016788, 05/01/2015, 03/12/2013

          2346378,    5016788, 05/01/2015, 05/01/2015

          ]

          ;

           

           

          temp:

          load

          Nind as NIND,

          NTI AS nti,

          DATE_EXAMEN as DateExam,

          Max(DATE_EXAMEN_PRECEDENT)as Last,

          Max(DATE_EXAMEN_PRECEDENT,2)as SecondLast

          resident Data

          Group by

          Nind,

          NTI,

          DATE_EXAMEN;

          drop table Data;

           

          2015-07-28_114137.png

            • Re: avant dernière date
              Samuel LESOURD

              Nice ! Thank you.

              I am trying this but it is not working ... :/

              TBLCHB:

              LOAD      NTI,

                             NIND,

                             DATE_EXAMEN,

                             max(DATE_EXAMEN) AS MAX_DATE_EXAMEN,

                             max(DATE_EXAMEN,2) AS DATE_EXAMEN_PRECEDENT

              FROM $(ENTREPOT)TBLCHB.QVD (qvd)

              where MATCH(ANTENNE,4,7)=0

              and match(if(not IsNull(ORIGINE),ORIGINE,'-'),'TBC','OMI','STB','CST')=0

              GROUP BY NTI, NIND, DATE_EXAMEN;

               

              Is it possible to do it directly when loading the table ?

               

              Because that is what I am doing and ...

              :/