Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
J'ai une requête sur QlikView me permettant de ressortir la liste des contrats de travail pour les différents agents.
J'ai les champs suivants :
- Service
- Nom
- Prénom
- CONTRATDEF (date du début contrat)
- CONTRDFIN (date de fin du contrat)
Pour le moment je ressors tous les contrats que les agents on eu pendant leur carrière, je souhaite obtenir par un filtre ou une formule la liste des contrats en cours à la date du jour de lancement de la requête.
Merci par avance pour votre aide
Romaric
bonjour
peut être comme çà :
let vToday=Num(Today());
Contrat:
LOAD IdContrat,
Magasin,
date(Début_Contrat) as [Date début Contrat],
date(Fin_Contrat) as [Date fin Contrat],
if (date(Début_Contrat) < date($(vToday)) and date(Fin_Contrat) > date($(vToday)), 'inactif', 'actif')
as statut_contrat
FROM ....
Bonjour,
Il te faut utiliser les "analyses d'ensemble". Pour ton cas et à partir d'un graphe :
L'idée est de créer une variable. Exemple var_date
Place un objet de tye curseur/calendrier pour sélectionner la date de rapport.
Note que tu peux utiliser directement une variable que tu initialisera avec l'objet
Dans un graphe, en dimension tu mest par exemple le service. Les autres champs peuvent être placé en dimension
ou en Expression avec la même formule. Mais il faut au minimum une Expresion comme suit :
Attention à la syntaxe.
NB: La date de fin de contrat ne doit pas être à NULL sinon il faudra la vérifier dans la formule.
Maxstring est une méthode pour les type CHAR ou STRING
maxstring( {$<
CONTRATDEF= {">=$(=var_date)"} * CONTRATDEF= {">=$(=var_date)"},
CONTRDFIN = {"<$=(=var_date)"}
>}
Nom)
Didier
Je me suis trompé dans les signes :
maxstring( {$<
CONTRATDEF= {">=$(=var_date)"} * CONTRATDEF= {"<=$(=var_date)"},
CONTRDFIN = {"<=$(=var_date)"}
>}
Nom)
Bonjour à tous,
pour moi, le plus simple est de créer un calendrier en script et d'y ajouter un intervalmatch, comme suis :
//calendrier
load IterNo() + num('01/01/2011')-1 as CAL_DATE ,
month(IterNo() + num('01/01/2011')-1) as CAL_MOIS,
Year(IterNo() + num('01/01/2011')-1)as CAL_ANNEE,
day(IterNo() + num('01/01/2011')-1) as CAL_JOURS
AutoGenerate (1)
while
IterNo() + num('01/01/2011')-1 <= num(Today());
//intervalmatch
NoConcatenate LOAD * Resident Ma_TABLERSE;
IntervalMatch (CAL_DATE) load DATEDEBUTCONTRAT, DATEFINCONTRAT Resident CHAMBRE ;
du coup, en utilisant un calendrier dans l'appli, en choisissant une date, on peut faire remonter tous les contrats qui étaient "en cours" à cette date...
oups, je me suis trompé en nommant les tables :
//intervalmatch
NoConcatenate LOAD * Resident calendrier;
IntervalMatch (CAL_DATE) load CONTRATDEF , CONTRDFIN Resident Ma_TABLE ;
alors, ça marche ?