Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous,
Serait il possible de me donner un coup de pouce svp :
Dans mon ex, la société x propose des séjours de 25 jours à des clients, les clients peuvent rester au minimum 1 journée et partir après.
Cependant je suis largué sur :
Le nombre de présent pour n'importe quelle mois ?
Explications :
Pour le mois de Janvier, les clients peuvent :
entrées avant 1 Janvier et partir en fonction de leur date d'arrivées le 1 ou le 2,
ils peuvent également sortir après le 31 Janvier puisqu'ils sont rentrées que le 25 Janvier,
peuvent également être présent que du 1 au 25 janvier et donc pas du 26 au 31...
Nom des champs :
date_entrées
date_sorties
nb_jour_client = indique le nombre de jours présent d'un client
Je suis un peux perdu même beaucoup, j'ai vu la notion de intervalmatch si vous avez des idées svp ?
Dans l'attente de vous lire je vous souhaite une excellente soirée !
Axel
Bonjour,
Il faut que tu commences par créer un calendrier : Calendrier QlikView
Ensuite, tu crées une table de présence en utilisant la fameuse fonction IntervalMatch : https://help.qlik.com/fr-FR/qlikview/12.1/Subsystems/Client/Content/IntervalMatch_(Extended_Syntax)....
Bonjour Laurent,
Mon calendrier est déjà crée mais mon problème est que je n'arrive pas à intégrer l'utilisation de l'intervalmatch dans mon cas. j'aimerai filtrer les dates des personnes présente en face de chaque date : date entrée et sortie mais je ne comprends pas comment je peux faire ... ex afficher un 1 en face de chaque jour de présence des personnes ...
Aurais tu un script à me partager en ex stp ?
IntervalMatch Function in QlikView
J'ai lu ce tuto sur intervalmatch il est super mais crée des tables synthetic et l'intérêt et de matcher une valeur sur une table isoler.. Peut être que je me trompe et que je dois tout simplement utiliser match ?
En te remerciant pour ton aide, excellente journée !
En gros j'aimerai réaliser ce tableau : Pour ainsi calculer le nombre de présent :
Nombre de présent / Période | |||||||||||||||||||||||||||||||
ID_Client | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||||
2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||||||||||
3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
J'ai bien compris ton besoin.
Peux-tu partager ton application ou, au moins, le script de chargement ?
J'aimerai pouvoir te la partager mais il y a trop d'informations confidentiels, un exemple en inline me suffit largement :
table_séjours:
load* inline [
cle_dossier, date_debt_sej, date_fin_sej, bjour_sejmens
123, 01/01/20117, 25/01/2017, 25
124,15/12/2016, 09/01/2017,25
125,20/01/201,14/02/2017,25 ];
dossiers:
load* inline [
cle_dossiers, cle_cli
123, 1
124,2
125,3];
cli:
load* inline [
cle_cli, id,cli
1,1532
2,1533
3,1534];
Du coup faut que je crée mon calendrier lié à la table séjours : mais sur qu'elle date m'appuyer début fin et comment répertorier ainsi les clients présent durant le mois de janvier ?
Il faut que tu ajoutes la création de ton calendrier pour que l'on t'aide.
RE Laurent
En PJ l'application test en te remerciant d'avance pour ton aide ..
Axel
Voilà qui devrait t'aider :
LET vMinDate = Num(Makedate(2017,1,1));
LET vMaxDate = Num(Makedate(Year(Now()),12,31));
ChampDate:
LOAD date($(vMinDate)+IterNo()-1) as MaDate
AUTOGENERATE (1)
WHILE $(vMinDate)+IterNo()-1<= $(vMaxDate);
Calendrier:
LOAD
MaDate as Date,
Year(MaDate) as Année,
'T ' & Num(Ceil(Month(MaDate)/3),'(ROM)0') as Trimestre,
Month(MaDate) as Mois,
MonthEnd(MaDate)as DateFinMois,
Week(MaDate) as Semaine,
Weekday(MaDate) as JourSemaine,
Day(MaDate) as Jour
RESIDENT ChampDate;
DROP TABLE ChampDate;
SET vMinDate = ;
SET vMaxDate = ;
table_séjours:
load* inline [
cle_dossiers, date_debt_sej, date_fin_sej, bjour_sejmens
123, 01/01/2018, 25/01/2018, 25
124,15/12/2017, 09/01/2018,25
125,20/01/2018,14/02/2018,25 ];
dossiers:
load* inline [
cle_dossiers, cle_cli
123, 1
124,2
125,3];
cli:
load* inline [
cle_cli, id,cli
1,1532
2,1533
3,1534];
presence:
LOAD
cle_dossiers, date_debt_sej, date_fin_sej
Resident table_séjours;
Inner Join INTERVALMATCH (Date)
LOAD DISTINCT date_debt_sej, date_fin_sej RESIDENT table_séjours;
DROP Fields date_debt_sej, date_fin_sej From presence;
Axel,
Ci-joint ce que tu attends.