3 Replies Latest reply: Mar 16, 2016 10:25 AM by Florent Lelarge-Otiniano RSS

    problème arrêt/prolongation

    Romaric CANTIN

      Bonjour,

       

      J'ai un problème car ce qui ressort de notre SIH est une ligne par arrêt. Il n'y a pas de regroupement entre les arrêts et les prolongation.

       

      Je voudrai avoir la prolongation lié à l'arrêt initial afin de comptabiliser le nombre d'arrêts de travail. Ou du moins je voudrai identifier d'un coté les arrêts et de l'autre les prolongations.

       

      J'ai les champs ci dessous :

      je vous mets un exemple de ce qui me ressort :

       

       

      Nom       ABSDEF                ABSDRET         ABSNBJ

      AAA        05/02/2015             06/02/2015          1

      AAA         15/06/2015            02/07/2015           17

      AAA         02/07/2015            12/07/2015          10

      AAA          12/07/2015            23/07/2015          11

       

       

      A partir de la je voudrai déterminer arrêt initial (première et deuxième ligne) et prolongation (ligne 3 et 4 en lien avec l'arrêt initial de la ligne 2).

       

      J'ai utilisé cette formule dans le script : 

       

      Base:
      LOAD
            @cle_CAL,
            Date                                                                       as Date_RH,
            Année                                                                   as Année_RH,
            Mois                                                                       as Mois_RH,
            CODE_UF                                                                   as UF_RH, 
            LIBELLE_UF                                                               as Libellé_UF,
            SERVICE                                                                   as Service,
            DEPARTEMENT                                                               as Département,
            POLE                                                                       as Pôle,
            @cle_AFF,
            GRADREG,
            GRADE,
            STATUT,
            ABS,
            MATRI,
            DATEVT,
            QUAND,
            DFIbis,
            NBJPER,
            ENTDEF,
            SORTDEF,
            ECHELON,
            TPSDEF,
            TPSMOTIF,
            TPSDFI,
            AFFDEF,
            ABSDEF,
            ABSNBJ,
            ABSNBJPER,
            ABSDRET,
            NOM,
            PRENOM,
            ID_AGENT,
            [Motif d'absence],
            LIBSTAT,
            CORPSNEH,
            GRADENEH,
            EMPLOINEH,
            FONCTNEH,
            LIBELLE,
            SIGNA,
            PourcentageAffectation,
            AFFTYP,
            DateFinAffectation,
            AFFNUIT,
            ETPJourTravaillé,
            ETPJourPayé,
            BUDGET
      FROM
      [..\ENTREPOT\REFERENTIELS\BaseGRH.qvd]
      (qvd);

       

      arrets:
      load ABSDRET,
      ABSDEF,

       

      if(previous(ABSDRET)=ABSDEF,'prolon','initial')  as PROLONGATION  //Previous()recherche la valeur de l'expression expr en utilisant les données de l'enregistrement d'entrée précédent

       

      FROM
      [..\ENTREPOT\REFERENTIELS\BaseGRH.qvd]
      (qvd);

       

       

      mais pour certains arrêts il me double les ligne (une en arrêt initial et l'autre en prolongation)

       

      Help svp

       

      Merci

        • Re: problème arrêt/prolongation
          bruno bertels

          Bonjour

           

          As tu essayer avec d'autres formules pour voir si tu as le même comportement ?

           

          Par exemple : en soustrayant les dates entre elles. Si = 0 alors prolongation sinon initial

          if(previous(ABSDRET) - ABSDEF = 0,'prolon','initial')  as PROLONGATION  //Previous()recherche la valeur de l'expression expr en utilisant les données de l'enregistrement d'entrée précédent

           

          FROM
          [..\ENTREPOT\REFERENTIELS\BaseGRH.qvd]
          (qvd);

           

           

           

          Ou alors un problème de reconnaissance de format date ?

          arrets:
          load ABSDRET,
          ABSDEF,

           

          if(previous(date(ABSDRET,'DD/MM/YY')) =date(ABSDEF,'DD/MM/YY') ,'prolon','initial')  as PROLONGATION  //Previous()recherche la valeur de l'expression expr en utilisant les données de l'enregistrement d'entrée précédent

           

          FROM
          [..\ENTREPOT\REFERENTIELS\BaseGRH.qvd]
          (qvd);

            • Re: problème arrêt/prolongation
              Romaric CANTIN

              Bonjour Bruno

               

              Aucune de tes deux formules ne changent le résultat, j'ai exactement le même résultat

               

              Merci

               

              Bien cordialement

                • Re: problème arrêt/prolongation
                  Florent Lelarge-Otiniano

                  Bonjour Romaric,

                   

                  Je pense qu'il faut faire un chargement ordonné par "Nom" pour avoir les date dans l'ordre et par "Nom".

                  de là on peut utiliser la fonction previous()...

                   

                  du genre :

                  Matable:

                  Nom       ABSDEF                ABSDRET         ABSNBJ

                  AAA        05/02/2015             06/02/2015          1

                  AAA         15/06/2015            02/07/2015           17

                  AAA         02/07/2015            12/07/2015          10

                  AAA          12/07/2015            23/07/2015          11

                  from MA_BDD....

                   

                  Load

                    *,

                    if(peek('Nom')=Nom,peek('NUM_Nom')+1,1) as NUM_Nom, ////Compteur agent

                        If(previous(Nom)=Nom,ABSDEF-previous(ABSDRET),0) as Intervalle     ////Délai entre ABSDRET et ABSDEF suivant

                  Resident Matable

                  order by Nom,  ABSDEF                , ABSDRET

                  ;

                  DROP TABLE Matable

                  ; //// Supression de la table  contenant le Nom initial/// Ne plus l'utiliser

                   

                  Du coup, si Intervalle = 0 alors =prolongation, sinon nouvel arrêt.

                   

                  A tester car je l'ai adapté d'un Qvw qui me sert à obtenir un délai de réhospitalisation...

                   

                  Bon Courage

                   

                  Florent.