Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
ArnaudTML
Contributor II
Contributor II

Calculer un âge / une ancienneté avec des dates glissantes

Bonjour,

J'ai une table Salarié avec les dates de naissance et les dates d'entrée dans la société.

Je souhaiterai catégoriser selon la tranche d'âge / la tranche d'ancienneté. Je suppose que la base de calcul est la même pour les deux aspects.

J'ai donc un tableau croisé dynamique avec la situation au 31/12 des 3 dernières années. Mais quand je compare la date anniversaire / d'entrée avec la date de la colonne, aucun résultat n'est affiché. D'où peut provenir l'erreur ?

EXPRESSION DE LA MESURE :
Count({$<num(ContratTravailDateEntreeReference)={">$(vDateAnciennete1An)"}>}%ContratTravailID)

VARIABLE vDateAnciennete1An :
num(AddMonths(MakeDate(Année,Mois,Jour),(-12*1)))

 

1 Solution

Accepted Solutions
christophebrault
Specialist
Specialist

Bonjour,

 

Je pense qu'il faut préparer les données dans le script pour ton besoin. Donc avoir pour chaque fin d'année la situation du salarié avec son âge et son ancienneté.

Tu auras par exemple 3 lignes pour un salarié entré avant 2016.

Voici un script d'exemple :

SalariésTmp:
load * Inline [
SalarieId,DateNaissance,DateEntree
A,21/02/1975,20/03/2015
B,12/07/1990,12/04/2016
C,11/11/1985,02/03/2018
];
join(SalariésTmp)
load * Inline [
Année
31/12/2016
31/12/2017
31/12/2018
];

NoConcatenate
Salariés:
Load *,
ceil(age(Année,DateEntree)) as Ancienneté,
ceil(age(Année,DateNaissance)) as AgeSalarié

resident SalariésTmp
where DateEntree<=Année;

drop table SalariésTmp;

 

Dans un TCD, tu mets Ancienneté et Année en dimension, et Count(SalarieId) en Mesure.

 

A ta disposition si tu veux plus d'explication

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin

View solution in original post

16 Replies
lcloatre
Partner - Creator III
Partner - Creator III

Bonjour,

Fais un tableau avec en dimension :

le matricule du salarié

sa date de naissance

sa date d'ancienneté

la variable vDateAnciennete1An

en mesure

la soustraction entre la variable et la date de naissance

 

Ça devrait te mettre sur la piste d'un éventuel pb de format, par exemple.

ArnaudTML
Contributor II
Contributor II
Author

Merci pour ta réponse, j'ai donc bien les deux dates au format numérique, en mesure, il fait bien le tri entre les <1an et les autres :

Capture.JPG

Dans le set analysis, par contre, ça ne passe toujours pas... il me met tout à 0 :

Count( {$< ContratTravailDateEntreeReference = {"> $(vDateAnciennete1An)"} >} %SalarieID)
lcloatre
Partner - Creator III
Partner - Creator III

Bonjour,

Je pense qu'il manque le =

 

Count( {$< ContratTravailDateEntreeReference = {"> $(=vDateAnciennete1An)"} >} %SalarieID)

 

ArnaudTML
Contributor II
Contributor II
Author

Même avec, toujours à 0... Smiley Sad

lcloatre
Partner - Creator III
Partner - Creator III

de mon côté, ça fonctionne :

ARNAUD:
NoConcatenate
LOAD * inline [
%SalarieID,ContratTravailDateEntreeReference,vDateAnciennete1An
A,41606,42735
B,41606,43100
C,43356,43100
D,42935,42735
E,43383,43100
F,43010,42735
];

=Count({<ContratTravailDateEntreeReference={"<$(vDateAnciennete1An)"} >} %SalarieID)

Seyko
Partner - Creator
Partner - Creator

Bonjour,
Essaie plutôt cette expression:
Count( {$< ContratTravailDateEntreeReference = {" > $( = $(vDateAnciennete1An) ) "} >} %SalarieID)
Excuse my english, i'm french!
ArnaudTML
Contributor II
Contributor II
Author

Seyko, ta solution fonctionne... mais seulement quand je sélectionne une seule date.

Si je choisis les 3 derniers 31/12 pour avoir un suivi, toutes les lignes sont à 0.

Seyko
Partner - Creator
Partner - Creator

Arnaud,
Peux-tu mettre des captures d'écran de la sélection que t'effectue et du résultat renvoyé par le tableau concerné?
Excuse my english, i'm french!
ArnaudTML
Contributor II
Contributor II
Author

Voici la sélection sur le 31/12/2018, puis sur les 31/12/2016-2017-2018 :

Capture2.JPG

Capture.JPG