2 Replies Latest reply: Feb 7, 2018 4:59 AM by Chadlia Gabsi RSS

    Calcul mouvement interne

    Chadlia Gabsi

      Bonjour,

      je veux calculer le nombre des agents entrants sortants d'une direction pour avoir les mouvements internes d'une entreprise. Donc j'ai utilisé la fonction previous comme ceci:

      tmp_1:

      LOAD MATRICULE,

           DATE_DEB_TEMP,

           DATE_FIN_TEMP,

           MOTIF,DIRECTION,MOIS,ANNEE

      Resident D;

       

       

      left join(D_VUE_DAA)

      ENTREES:

      LOAD MATRICULE,

      DATE_DEB ,DIRECTION,

      If(MATRICULE=Peek(MATRICULE)and DIRECTION<>Peek(DIRECTION),1,0) as ENTREE

      Resident tmp_1

      Order By MATRICULE,MOIS,ANNEE,DATE_DEB;

       

      Join

      LOAD MATRICULE,

      DATE_FIN_TEMP ,

           MOTIF,DIRECTION,MOIS,ANNEE,

      If(MATRICULE=Peek(MATRICULE)and DIRECTION<>Peek(DIRECTION),1) as SORTIE

      Resident tmp_1

      Order By MATRICULE,MOIS,ANNEE,DATE_FIN;

      Drop Table tmp_1;

      Ce script me retourne le résultat suivant  c'est un pour tout les mois du changement. cette personne a changé la direction au milieu du mois de novembre donc je souhaite avoir previous direction X 1 sortie , direction Y actuel 1 entrée.

      Merci

      Sans titre.png

        • Re: Calcul mouvement interne
          Sébastien Fatoux

          Salut,

           

          Essaye en remplaçant Peek par Previous dans ton script et précise ta 2ème jointure:

           

          tmp_1:

          LOAD MATRICULE,

              DATE_DEB_TEMP,

              DATE_FIN_TEMP,

              MOTIF,DIRECTION,MOIS,ANNEE

          Resident D;

           

           

          left join(D_VUE_DAA)

          ENTREES:

          LOAD MATRICULE,

          DATE_DEB ,DIRECTION,

          If(MATRICULE=Previous(MATRICULE)and DIRECTION<>Previous(DIRECTION),1,0) as ENTREE

          Resident tmp_1

          Order By MATRICULE,MOIS,ANNEE,DATE_DEB;

           

          left join(D_VUE_DAA)    //Join

          LOAD MATRICULE,

          DATE_FIN_TEMP ,

              MOTIF,DIRECTION,MOIS,ANNEE,

          If(MATRICULE=Previous(MATRICULE)and DIRECTION<>Previous(DIRECTION),1) as SORTIE

          Resident tmp_1

          Order By MATRICULE,MOIS,ANNEE,DATE_FIN;

           

          Drop Table tmp_1;

            • Re: Calcul mouvement interne
              Chadlia Gabsi

              Bonjour Sébastien,

              je pense que ma question n'est pas clair .

              En effet, j'ai le tableau suivant comme données  :

              t.png

              Donc cette personne novembre 2017 elle était dans la direction DR et en décembre elle a fait un changement d'affectation donc pour moi je dois ajouter 1 juste dans le mois de changement par contre mon script et le tien me donne pour 1 pour tout les mois à partir de Décembre. Le tableau souhaité est le suivant.

              t.png

              Pour moi je dois ajouter dans mon

              If(MATRICULE=Previous(MATRICULE)and DIRECTION<>Previous(DIRECTION) and MOIS-1=PREVIOUS (MOIS),1,0) as ENTREE

              mais ca ne fonctionne pas