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

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

IF(ISNULL(IE.CODE),IE.CODE,IP.Code)

Hola,

     Espero que alguien me pueda ayudar, estoy intentando realizar la carga de datos en Qlik sense con la ayuda del ISNULL y es muy diferente a SQL lo que intento es que si el valor es NULO tome el siguiente valor.

Sentencia en SQL

SQL --->  ISNULL(IE.Code,IP.Code)

Intentos en Qlick Sense

Qlik Sense --->

               1. IF(ISNULL(IE.CODE),IE.CODE,IP.Code)

               2. IF(ISNULL(IE.CODE) = 0,IE.CODE,IP.Code)

Les paso el script

LOAD Code as "Code_ItemEntrega";

SQL SELECT  IF(ISNULL(IE.Code),IE.Code,IP.Code)

FROM S3NetSODA.dbo."S3TblObj_Pedido" P

   INNER JOIN S3NetSODA.dbo."S3TblObj_ItemPedido" IP  ON IP.Pedido = P.Code

   INNER JOIN S3NetSODA.dbo."S3TblObj_Periodo" Pd  ON P.Prototype = Pd.Prototype AND P.Prototype = 0 AND (P.Fecha BETWEEN Pd.Desde AND Pd.Hasta)

   INNER JOIN S3NetSODA.dbo."S3TblObj_EscenarioPeriodo" EP ON EP.Periodo = Pd.Code

   LEFT JOIN S3NetSODA.dbo.ItemPedidoEntrega IE ON IE.ItemPedido = IP.Code AND IE.EscenarioPeriodo = EP.Code;

Las relaciones declaradas en los INNER se encuentran de manera correcta.

Espero me puedan ayudar!

Gracias!!!

3 Replies
Miguel_Angel_Baeyens

Hola Cinthya,

Creo que el problema está en que estás usando la función IsNull() en la sentencia SQL, y no en LOAD. Ten en cuenta que todo lo que está detrás del SQL SELECT se envía a la librería de conexión específica. Si por algún motivo IsNull() no es una función válida en tu origen de datos, entonces se produce un error. Mi recomendación sería:

Code_ItemEntrega:

LOAD IF(LEN(IE.Code) = 0, IE.Code, IP.Code) AS Campo;

SQL SELECT  IE.Code, IP.Code

FROM S3NetSODA.dbo. "S3TblObj_Pedido" P 

INNER JOIN S3NetSODA.dbo. "S3TblObj_ItemPedido" IP

           IN IP.Pedido = P.Code 

INNER JOIN S3NetSODA.dbo. "S3TblObj_Periodo" Pd

           IN P.Prototype = Pd.Prototype

           AND P.Prototype = 0

           AND (P.Fecha BETWEEN Pd.Desde AND Pd.Hasta)

INNER JOIN S3NetSODA.dbo. "S3TblObj_EscenarioPeriodo" EP EN EP.Periodo = Pd.Code

LEFT JOIN S3NetSODA.dbo.ItemPedidoEntrega IE

           IN IE.ItemPedido = IP.Code

           AND IE.EscenarioPeriodo = EP.Code;

Miguel

jvitantonio
Specialist III
Specialist III

Agregando a lo que dijo Miguel, en tu SQL puedes usar:

T-SQL:

SELECT ISNULL(tuCampo, 'Valor que quieres que devuelva si tuCampo es null') FROM tuTabla

PL/SQL:

SELECT NVL(tuCampo, 'valor que quieres que devuelva si tuCampo es null') FROM tuTabla

Saludos

JV

Not applicable
Author

Muchas Gracias