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: 
joshibabu_are
Contributor
Contributor

replicate case statement in qlikview

hi guru's,

i want to implement case statement from oracle table into Qlikview script.

how to achieve this.

CASE

          WHEN CERT_REQUIRED IS NULL

          THEN

             'Data Issue'

          WHEN CERT_REQUIRED = 'No'

          THEN

             'No Cert Required'

          WHEN CERT_REQUIRED = 'Yes'

          THEN

             CASE

                WHEN cert_expiration IS NULL THEN cert_status ||''|| ' - Certificate – NO Expiry'

                WHEN cert_expiration < SYSDATE THEN 'Expired Certificate'

                WHEN cert_expiration < SYSDATE + 30 THEN 'Expiring 30 Days'

                WHEN cert_expiration < SYSDATE + 90 THEN 'Expiring 90 Days'

                WHEN cert_expiration < SYSDATE + 180 THEN 'Expiring 180 Days'

                ELSE 'Certificate in Good Standing'

             END

       END

          "Effective_Cert_Status",

Thanks,

Joshi

1 Solution

Accepted Solutions
sunny_talwar

May be this:

If(Len(Trim(CERT_REQUIRED)) = 0, 'Data Issue',

     If(CERT_REQUIRED = 'No', 'No Cert Required',

          If(CERT_REQUIRED = 'Yes',

               If(Len(Trim(cert_expiration)) = 0, cert_status & ' - Certificate – NO Expiry',

                    If(cert_expiration < Today(), 'Expired Certificate',

                         If(cert_expiration < Today() + 30, 'Expiring 30 Days',

                              If(cert_expiration < Today() + 90, 'Expiring 90 Days',

                                   If(cert_expiration < Today() + 180, 'Expiring 180 Days', 'Certificate in Good Standing')))))))) as [Effective_Cert_Status]

I might have added an extra parenthesis or missed one....

View solution in original post

4 Replies
sunny_talwar

May be this:

If(Len(Trim(CERT_REQUIRED)) = 0, 'Data Issue',

     If(CERT_REQUIRED = 'No', 'No Cert Required',

          If(CERT_REQUIRED = 'Yes',

               If(Len(Trim(cert_expiration)) = 0, cert_status & ' - Certificate – NO Expiry',

                    If(cert_expiration < Today(), 'Expired Certificate',

                         If(cert_expiration < Today() + 30, 'Expiring 30 Days',

                              If(cert_expiration < Today() + 90, 'Expiring 90 Days',

                                   If(cert_expiration < Today() + 180, 'Expiring 180 Days', 'Certificate in Good Standing')))))))) as [Effective_Cert_Status]

I might have added an extra parenthesis or missed one....

stabben23
Partner - Master
Partner - Master

This could be an alternative:

if(isnull(CERT_REQUIRED), 'Data Issue')),

If(CERT_REQUIRED ='No','No Cert Required',

if(CERT_REQUIRED ='Yes',

if(cert_expiration < today(),'Expired Certificate',

if(today() - cert_expiration > 30 , 'Expiring 30 Days',

if(today() - cert_expiration > 90 , 'Expiring 90 Days',

if(today() - cert_expiration > 180 , 'Expiring 180 Days',

  Certificate in Good Standing'))))))) as "Effective_Cert_Status"

Be aware also here With parentheses

maxgro
MVP
MVP

maybe with a nested if, something like (replace the variables with your fields, sysdate with today() function)

let cert_required = 3;

let cert_expiration = 3;

load

if ($(cert_required)=1, 'cert_required 1',

if ($(cert_required)=2, 'cert_required 2',

if ($(cert_required)=3,

  if ($(cert_expiration)=1, 'cert_required 3, cert_expiration 1',

  if ($(cert_expiration)=2, 'cert_required 3, cert_expiration 2',

  if ($(cert_expiration)=3, 'cert_required 3, cert_expiration 3',

  if ($(cert_expiration)=4, 'cert_required 3, cert_expiration 4'

  )))),

if ($(cert_required)=4, 'cert_required 4',

  'cert_required other'

  )))) as effective_cert_status

AutoGenerate 1;


    

jpenuliar
Partner - Specialist III
Partner - Specialist III