Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
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
Luminary Alumni
Luminary Alumni

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