Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
@sevvalk from where ftdinp <> 'N' condition is coming? It seems incomplete query.
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.