Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
ab92
Creator II
Creator II

Nombre de présent entre des tranches de dates

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

1 Solution

Accepted Solutions
lcloatre
Partner - Creator III
Partner - Creator III

Axel,

Ci-joint ce que tu attends.

View solution in original post

10 Replies
lcloatre
Partner - Creator III
Partner - Creator III

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

ab92
Creator II
Creator II
Author

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 !

ab92
Creator II
Creator II
Author

En gros j'aimerai réaliser ce tableau : Pour ainsi calculer le nombre de présent :

   

Nombre de présent / Période
ID_Client12345678910111213141516171819202122232425262728293031
1 11111111111111111111111111
2 111111111111111
31111111111111111111111111
lcloatre
Partner - Creator III
Partner - Creator III

J'ai bien compris ton besoin.

Peux-tu partager ton application ou, au moins, le script de chargement ?

ab92
Creator II
Creator II
Author

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 ?

lcloatre
Partner - Creator III
Partner - Creator III

Il faut que tu ajoutes la création de ton calendrier pour que l'on t'aide.

ab92
Creator II
Creator II
Author

RE Laurent

En PJ l'application test en te remerciant d'avance pour ton aide ..

Axel

lcloatre
Partner - Creator III
Partner - Creator III

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;

lcloatre
Partner - Creator III
Partner - Creator III

Axel,

Ci-joint ce que tu attends.