Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
FLASH SALE: Save $500! Use code FLASH2026 at checkout until Feb 14th at 11:59PM ET. Register Now!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Loop

Amigos, estoy intentando que en una carga de datos, me inserte una línea por cada día del intervalo de fechas, en donde Fecha sea cada uno de los días del intervalo y el resto de los campos se repitan. El Script no me da error, pero no me funciona, ¿Alguna sugerencia?.

Muchas gracias !

Resto_incixCenso:

Set a=0;

Do while a<=(ffin-fini)

LOAD

  censo as censo_inci,

    fini as fini_inci,

    ffin as ffin_inci,

    fini-a as Fecha,

    inci;

LEt a=a+1;

Loop  

   

SQL SELECT

  censo,

  fini,

  ffin,

  inci

FROM sestibalsa.dbo.inci

where inci='ID';

Para una mayor comprensión, se trataría de ésto:

    

ORIGEN
censo ffinfiniinci
1815 22-05-1621-05-16ID
RESULTADO ESPERADO
censoFechaffinfiniinci
181521/05/201622-05-1621-05-16ID
181522/05/201622-05-1621-05-16ID
1 Solution

Accepted Solutions
rubenmarin

Hola Juan, prueba si con este script te valdría, con los datos que has puesto de ejemplo a mi me ha funcionado:

ORIGEN:

LOAD censo,

  Date(fini + IterNo() - 1) as fecha,

  ffin,

  fini,

  inci

While fini + IterNo() - 1 <= ffin;

LOAD censo, Date(Date#(ffin, 'DD-MM-YY')) as ffin, Date(Date#(fini, 'DD-MM-YY')) as fini, inci Inline [

censo, ffin, fini, inci

1815, 22-05-16, 21-05-16, ID

];

Sin título.png

Saludos.

View solution in original post

4 Replies
aramirez
Contributor II
Contributor II

Hola Juan,

creo que el motivo es que la ejecución del script no está entrando en el bucle.

Prueba con el siguiente script a ver si se soluciona tu problema:

tmp:

SQL SELECT

  censo,

  fini,

  ffin,

  inci

FROM sestibalsa.dbo.inci

where inci='ID';

let num_dias = peek('ffin')-Peek('fini');

Set a=0;

Do while a <= num_dias

Resto_incixCenso:

LOAD

  censo as censo_inci,

    fini as fini_inci,

    ffin as ffin_inci,

    fini-$(a) as Fecha,

    inci

resident tmp;

LEt a=a+1;

Loop 

Drop Table tmp;



Un saludo

Alfredo

rubenmarin

Hola Juan, prueba si con este script te valdría, con los datos que has puesto de ejemplo a mi me ha funcionado:

ORIGEN:

LOAD censo,

  Date(fini + IterNo() - 1) as fecha,

  ffin,

  fini,

  inci

While fini + IterNo() - 1 <= ffin;

LOAD censo, Date(Date#(ffin, 'DD-MM-YY')) as ffin, Date(Date#(fini, 'DD-MM-YY')) as fini, inci Inline [

censo, ffin, fini, inci

1815, 22-05-16, 21-05-16, ID

];

Sin título.png

Saludos.

Anonymous
Not applicable
Author

Muchísimas gracias Alfredo, no me sirve, porque el duplicado lo tiene que hacer por cada fila.

Anonymous
Not applicable
Author

Perfecto, es exactamente lo que estaba buscando, muchísimas gracias Rubén!