Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Bckaps
Contributor II
Contributor II

Générer des dates en fonction d'une date de début et de fin présente dans une table

Bonjour à la communauté,

Voici ma problématique :

J'ai une table Financement avec les champs suivants :

ID_Financement LoyerMensuel DateDebut DateFin
1 640 01/01/2024 30/06/2024
2 580 01/03/2024 31/05/2024

 

J'aimerais pouvoir générer un script qui me donne le résultat suivant :

ID_Financement Période LoyerMensuel
1 01/01/2024 640
1 01/02/2024 640
1 01/03/2024 640
1 01/04/2024 640
1 01/05/2024 640
1 01/06/2024 640
2 01/03/2024 580
2 01/04/2024 580
2 01/05/2024 580

 

Je ne sais pas comment m'y prendre alors je sollicite votre aide pour des idées.

Merci d'avance.

1 Solution

Accepted Solutions
Dref278
Creator II
Creator II

Bonjour,

Je ne sais pas s'il existe une solution pour le faire visuellement dans une table, en ne chargeant que la table de base. peut être qu'un autre membre pourra vous aider.

Dans le cas contraire, le script ci-dessous (à adapter à votre cas) permet d'obtenir le même résultat :

BASE:
LOAD * INLINE [
ID_FINANCEMENT, LOYER_MENSUEL,Debut,Fin
1,640,01/01/2024,30/06/2024
2,580,01/03/2024,31/05/2024
];
 
NoConcatenate
 
FINALE:
Load 
ID_FINANCEMENT,
Debut as Periode,
LOYER_MENSUEL as LOYER
resident BASE;
 
LET i=0;
 
For i=0 to NoOfFields('BASE') step 1
 
LET v_Debut = peek('Debut',i,'BASE');
LET v_Fin=peek('Fin',i,'BASE');
    
 
do while addmonths(v_Debut,1) < v_Fin
   
        v_Debut=addmonths(v_Debut,1);
        
Concatenate(FINALE)
Load
Peek('ID_FINANCEMENT',$(i),'BASE') as ID_FIN,
    Date(Date#('$(v_Debut)','DD/MM/YYYY')) as Periode,
    Peek('LOYER_MENSUEL',$(i),'BASE') as LOYER
    resident BASE;
                
        loop
next        
 
 
// drop Tablr BASE
    
    
 
 
 
 
 
 
 
exit script;
 
 

Cdlt,

Pour avoir une bonne réponse, il faut poser la bonne question (Chat GPT, 2023)

View solution in original post

2 Replies
Dref278
Creator II
Creator II

Bonjour,

Je ne sais pas s'il existe une solution pour le faire visuellement dans une table, en ne chargeant que la table de base. peut être qu'un autre membre pourra vous aider.

Dans le cas contraire, le script ci-dessous (à adapter à votre cas) permet d'obtenir le même résultat :

BASE:
LOAD * INLINE [
ID_FINANCEMENT, LOYER_MENSUEL,Debut,Fin
1,640,01/01/2024,30/06/2024
2,580,01/03/2024,31/05/2024
];
 
NoConcatenate
 
FINALE:
Load 
ID_FINANCEMENT,
Debut as Periode,
LOYER_MENSUEL as LOYER
resident BASE;
 
LET i=0;
 
For i=0 to NoOfFields('BASE') step 1
 
LET v_Debut = peek('Debut',i,'BASE');
LET v_Fin=peek('Fin',i,'BASE');
    
 
do while addmonths(v_Debut,1) < v_Fin
   
        v_Debut=addmonths(v_Debut,1);
        
Concatenate(FINALE)
Load
Peek('ID_FINANCEMENT',$(i),'BASE') as ID_FIN,
    Date(Date#('$(v_Debut)','DD/MM/YYYY')) as Periode,
    Peek('LOYER_MENSUEL',$(i),'BASE') as LOYER
    resident BASE;
                
        loop
next        
 
 
// drop Tablr BASE
    
    
 
 
 
 
 
 
 
exit script;
 
 

Cdlt,

Pour avoir une bonne réponse, il faut poser la bonne question (Chat GPT, 2023)
Bckaps
Contributor II
Contributor II
Author

Merci beaucoup, ça fonctionne nickel !