Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
igutierrezp
Contributor II
Contributor II

Seleccionar información de los últimos 15 días.

Estimados, necesito un poco de sus conocimientos.

Tengo que crear un reporte diario en el cual la información es histórica de hace 3 años, pero se me pidió que el reporte tenga solo los datos de los últimos 15 días.

les dejo una imagen de los campos.

Se me ocurre hacerle al campo:

FechaDoc <= 15                                  no me funciona

Today(FechaDoc)<= 15                    no me funciono

quedo atento a sus respuestas y desde ya muchas gracias.

 

 

15 Replies
rubenmarin

Hola, si es el where del SQL habría que crear primero la fecha tal como la espera el SQL, por ejemplo:

LET vFechaInicio = Date(Today()-15);

Y luego usar el contenido de la variable en el where:

SELECT ... FROM... WHERE CampoFecha >='$(vFechaInicio)'

jmmayoral3
Creator
Creator

Hola.

Si te devuelve 0 y -1, correcto. Te está funcionando bien. Está evaluando la expresión y te está diciendo si se cumple o no se cumple y ese valor lo mete en el campo Fecha2.contrato.
Recuerda que el valor -1 es TRUE y 0 es FALSE.

Una vez que tienes eso en tu modelo, puedes usarlo para identificar las fechas que cumplen la condición. en cada expresión tendrías que usar un set analysis del tipo SUM({<Fecha2.contrato={-1}> Ventas). De esta forma sólo tendría en cuenta las fechas de menos de 15 dáis.

Pero añadir el set analysis en cada expresión de cada gráfico es un poco tedioso, por lo que yo seguiría con el plan A: Filtrar los datos en el script.

Si no te reconoce TODAY() en el WHERE es porque lo estás poniendo en el WHERE del SQL y por supuesto esa función no es de ORACLE, por eso falla.

Tienes que poner el WHERE en la sentencia LOAD o hacer el WHERE del SQL como te dice Ruben en el POST anterior.

Tu script tiene que quedar así:

NOMBRETABLA:

LOAD campo1 AS xxxxx,
            campo2 AS yyyyy,
            campo3 AS zzzzz,
            ERDAT    AS Fecha
WHERE Interval(Today() - ERDAT, 'D') <=15;
SQL SELECT campo1,
                          campo2,
                          campo3,
                          ERDAT
FROM tabla_oracle

;

igutierrezp
Contributor II
Contributor II
Author

Estimado, muchas gracias por tu ayuda, puse:

WHERE Interval(Today() - ERDAT, 'D') <=14;    en el load y funciono.

Muchas gracias nuevamente y a todos en realidad.

Saludos!!

jmmayoral3
Creator
Creator

Hola de nuevo.

Una vez resuelto, marca como correcta alguna de la respuesta parra que sirva de ayuda a otros compañeros cuando tengan un problema similar.

Gracias.

igutierrezp
Contributor II
Contributor II
Author

Listo!

Saludos.

rperezlaso
Contributor III
Contributor III

El equivalente a today() de qlikSense en sql server es GETDATE() w3schools ejemplo y en oracle es SYSDATE.

en cualquiera de los dos casos para tu ejemplo podrias hacer getDate()-15 o sysdate -15 

 

un saludo.