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

Loop addmonths between two dates

Hi, 

I want to create a loop to add months beetwen two for each pn.

Example i have this table with min date and max date for each pn : 

jmialoundama_0-1675271583052.png

For PN 12345 i need to add month until 31/04/2025 : 

01/02/2023

01/03/2023

01/04/2023

01/05/2023

.

.

.

01/01/2024

.

.

31/04/2025

 

Thanks in advance for your help 🙂

 

Labels (2)
4 Replies
brunobertels
Master
Master

hi 

try this 


load *,

date(AddMonths(Date_1,iterno()-1),'DD/MM/YYYY') as NewDate
while date(Date_2)>=AddMonths(Date_1,iterno()-1) ;
;

 

LOAD * INLINE
[
PN,Date_1,Date_2
12345,01/02/2023,31/04/2025
5698,05/08/2024,04/08/2028
78941,01/03/2023,05/05/2026
1456987,01/02/2023,01/06/2024
](delimiter is ',');

 

jmialoundama
Specialist
Specialist
Author

Bonjour @brunobertels,

J'ai pu voir vos réponses sur certains forums et il me semble que vous parlez français ?

 

J'ai essayé votre solution mais c'est vrai que l'exemple que j'ai mis n'était pas vraiment pertinent. 

En fait ce que je souhaite faire c'est générer des dates entre chaque interval pour chaque PN. 

J'ai un PN qui a plusieurs dates mais il y'a des trous entre les dates : 

PN DATE
008Q614 01/02/2023
008Q614 28/02/2023
008Q614 25/11/2023
008Q614 04/12/2023
008Q614 31/12/2023
008Q614 31/05/2024
008Q614 25/11/2024
008Q614 04/12/2024
008Q614 31/12/2024
008Q614 25/11/2025
008Q614 04/12/2025

 

Pour ce cas je souhaite générer des dates entre le 01/02/2023 et le 28/02/2023 , entre 28/11/02 et le 25/11/2023 ainsi de suite, jusqu'au 04/12/2025. 

J'ai essayé votre solution mais je n'ai pas le résultat attendu : 

Exemple pour ce PN j'ai uniquement 2 dates (min  date= 01/02/2023 et max date = 12/04/2025), du coup je souhaite générer des dates entre le 01/02/2023 et le 12/04/2025 : (01/03/2023, 01/04/2023 -jusqu'au 12/04/2025)

PN Max Date Min date
91337140 12/04/2025 01/02/2023
brunobertels
Master
Master

Bonjour 

en suivant la logique de @hic ( thank you Hic ,I have learn something more today) 

peut être comme çà alors : 

load *,

date(peek(DATE)) as DATE2,
;
LOAD * INLINE
[

PN,DATE
008Q614, 01/02/2023
008Q614, 28/02/2023
008Q614, 25/11/2023
008Q614, 04/12/2023
008Q614, 31/12/2023
008Q614, 31/05/2024
008Q614, 25/11/2024
008Q614, 04/12/2024
008Q614, 31/12/2024
008Q614, 25/11/2025
008Q614, 04/12/2025
](delimiter is ',');


final:
Load * ,
Age( DATE2 + IterNo()- 1, DATE) as Age,

Date( DATE2 + IterNo()-1 ) as ReferenceDate
Resident [Table]
While IterNo() <= DATE - DATE2 + 1 ;
drop table [Table];

 

j'ai ceci :

brunobertels_0-1675354682593.png