Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
rcama29
Contributor
Contributor

WHERE Condicional entre campos de dos tablas

Hola, espero me puedan ayudar con una asociacion condicional entre campos de dos tablas diferentes en el script de Qlik Sense.
Lo que necesito lograr es agregar un campo nuevo en la tabla de CALIDAD con el valor de DESCRIPTION de la tabla PROYECTOS cuando TRANSDATE es mayor o igual que FROMDATE y cuando TRANSDATE es menor o igual que  TODATE. tengo problemas en hacer esa validacion con campos de diferentes tablas.
 
// Cargar tabla PROYECTOS
PROYECTOS:
LOAD
    DESCRIPTION,
    ALMACEN, //Campo en comun
    LOCALIDAD, //Campo en comun
    FROMDATE, //Campo de fecha
    TODATE //Campo de fecha
FROM PROYECTOS.qvd
(qvd);
 
// Cargar tabla CALIDAD (en esta tabla se necesita crear el campo nuevo con el valor de DESCRIPTION con la condicion WHERE [TRANSDATE] >= [FROMDATE] AND [TRANSDATE] <= [TODATE])
CALIDAD:
LOAD
ALMACEN, //Campo en comun
LOCALIDAD, //Campo en comun
TRANSDATE //Campo de fecha
 FROM CALIDAD.qvd
(qvd);
 
He intentado utilizar:
WHERE [TRANSDATE] >= [FROMDATE] AND [TRANSDATE] <= [TODATE];
pero me marca error al no encontrar un campo que pertenece a otra tabla
 
Saludos.
Labels (4)
2 Replies
silvanjunior
Employee
Employee

Olá @rcama29 
Creo que necesitas que los campos de fecha estén en la misma tabla para agregar este tipo de selección. De esta manera unes las tablas y luego podrás hacer una comparación línea por línea.
Pasos sugeridos:
1- Creo una clave compuesta y cada tabla tiene una clave única

Proyecto:
LOAD

ALMACEN & LOCALIDAD como key_unique

ALMACEN, //campo común
UBICACIÓN, //campo común
...


Calidad:

LOAD

ALMACEN & LOCALIDAD como key_unique

TRANSDATE
DE....

2- Únase a estas tablas uniéndose usando la clave sintética.
Tabla resultante:
Precalidad:
LOAD

llave unica
DESCRIPCIÓN,
ALMACEN, //campo común
UBICACIÓN, //campo común
FROMDATE, //Cierra el campo
HOY //Cerrar campo
TRANSDATE //Cierra el campo
...

3- ahora que los campos de fecha están en la misma tabla y alineados línea por línea. Puede aplicar filtros de fecha. Es

Calidad_final:

LOAD

llave unica,
DESCRIPCIÓN,
ALMACEN, //campo común
UBICACIÓN, //campo común
TRANSDATE //Cierra el campo
residente Pre_qualidade donde [TRANSDATE] >= [FROMDATE] AND [TRANSDATE] <= [TODATE]);

NOTA: Verifique que los campos de fecha estén en la misma estructura.

Espero haber ayudado,
buena suerte

rcama29
Contributor
Contributor
Author

Hice lo siguiente y me marca error (recientemente comence a utilizar script):
 
// Cargar tabla PROYECTOS
PROYECTOS:
LOAD
    DESCRIPTION,
    ALMACEN & LOCALIDAD AS key_unique
    ALMACEN, //Campo en comun
    LOCALIDAD, //Campo en comun
    FROMDATE, //Campo de fecha
    TODATE //Campo de fecha
FROM PROYECTOS.qvd
(qvd);
 
// Cargar tabla CALIDAD (en esta tabla se necesita crear el campo nuevo con el valor de DESCRIPTION con la condicion WHERE [TRANSDATE] >= [FROMDATE] AND [TRANSDATE] <= [TODATE])
CALIDAD:
LOAD
ALMACEN & LOCALIDAD AS key_unique,
ALMACEN, //Campo en comun
LOCALIDAD, //Campo en comun
TRANSDATE //Campo de fecha
 FROM CALIDAD.qvd
(qvd);
 
// Combinar las dos tablas
Pre_calidad :
    Load
    key_unique,
    ALMACEN,
    LOCALIDAD,
    TRANSDATE,
    FROMDATE,
    TODATE,
    DESCRIPTION;
 
Calidad_final:
Load
     key_unique,
     DESCRIPCIÓN,
     ALMACEN, 
     UBICACIÓN,
     TRANSDATE
resident Pre_calidad where [TRANSDATE] >= [FROMDATE] AND [TRANSDATE] <= [TODATE];
---------------------------------------------------------------------
Y me devuelve el siguiente error:
 
Se ha producido el siguiente error:
Table 'Pre_calidad' not found
El error se ha producido aquí:
Calidad_final:
Load
key_unique,
DESCRIPCIÓN,
ALMACEN, 
UBICACIÓN,
TRANSDATE
resident Pre_calidad where [TRANSDATE] >= [FROMDATE] AND [TRANSDATE] <= [TODATE]