Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

problème arrêt/prolongation

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

3 Replies
brunobertels
Master
Master

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);

Not applicable
Author

Bonjour Bruno

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

Merci

Bien cordialement

flochi75
Creator III
Creator III

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.