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

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
sevvalk
Creator
Creator

Change case when sql to qlik sense script

Hi,

I want to change this sql to qlik sense script. Maybe it can be using if but i couldn't do.

 

CASE WHEN ftdinp <> 'N'

              THEN (SELECT ibmyil||ibmrfc||ibmref FROM salibd,salibm

                          WHERE ibdunq = (SELECT spdkun FROM salspd

                                                    WHERE spdunq = ftdkun)

                                    AND ibmyil = ibdyil

                                    AND ibmrfc = ibdrfc

                                    AND ibmref = ibdref

                           )

              ELSE (SELECT ibmyil||ibmrfc||ibmref FROM salibd,salibm

                         WHERE ibdunq = (SELECT spdkun FROM salspd

                                               WHERE spdunq = (SELECT irdkun FROM salird

                                                                      WHERE irdunq = ftdkun)

                                              )

                                   AND ibmyil = ibdyil

                                   AND ibmrfc = ibdrfc

                                   AND ibmref = ibdref

 

                       )

  END

Labels (6)
2 Replies
Kushal_Chawda

@sevvalk  from where ftdinp <> 'N' condition is coming? It seems incomplete query.

Qrishna
Master
Master

Havent run this code so am not sure of any errors, but your code can be transalted into qlik codelike below:

// Load `salspd` table
salspd:
LOAD spdunq, spdkun
RESIDENT OriginalTable; // Original table where `ftdkun` comes from

// Load `salird` and `salspd` together, joining them to get `irdkun` if `spdunq = irdunq`.
LEFT JOIN (salspd)
LOAD irdunq AS spdunq, irdkun
RESIDENT salird;

// Load `salibd` and `salibm`, using joins on conditions `ibdunq = ibmunq`, `ibmyil = ibdyil`, `ibmrfc = ibdrfc`, and `ibmref = ibdref`.
salibd_salibm:
JOIN
LOAD
ibdunq AS ibmunq, // Join condition
ibmyil,
ibmrfc,
ibmref
RESIDENT salibd;

LEFT JOIN (salibd_salibm)
LOAD
ibmyil,
ibmrfc,
ibmref,
ibmunq
RESIDENT salibm;

// Final conditional logic to select and concatenate values.
FinalTable:
LOAD *,
IF(
ftdinp <> 'N',
ibmyil & ibmrfc & ibmref,
IF(
EXISTS(spdkun),
ibmyil & ibmrfc & ibmref,
NULL()
)
) AS CombinedValue
RESIDENT salibd_salibm;

 

this can still be simplified: 

LOAD *,
IF(
ftdinp <> 'N',
// Condition when ftdinp is not 'N'
Peek('ibmyil') & Peek('ibmrfc') & Peek('ibmref'),

// Condition when ftdinp is 'N'
IF(
EXISTS('salspd', spdkun) AND EXISTS('salird', irdkun),
Peek('ibmyil') & Peek('ibmrfc') & Peek('ibmref'),
NULL()
)
) AS CombinedValue
RESIDENT yourTable; - let me know how it goes.