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: 
MrBosch
Creator
Creator

What is the syntax to evaluate a variable and show a text depending the value in Qlik View

Hello, the infinite pool of mighty wisdom,

Can anyone give me some tips on how I can make the following happen:

I am building a report. In the report, a variable needs to be evaluated and the corresponding textual content should be inserted.

An easy example: is the variable WEIGHT.

I create a New Text Object and need the variable to be evaluated as follows:

If WEIGHT is
< 50 texts should appear: 'You need to gain weight. You can achieve this ...'
50 - 75 'Great weight. Keep a healthy lifestyle.'
>75 'You should lose some weight. You could consider ...'.

Thanks for your help! Highly appreciated.

Labels (1)
3 Solutions

Accepted Solutions
marcus_sommer

Maybe something like: if(WEIGHT < 50, 'a', if(WEIGHT > 75, 'c', 'b'))

- Marcus

View solution in original post

marcus_sommer

In general quite similar - and if the order - ascend or descend - of the check is continuously you don't need to check for between. This means the following should be working:

if(WEIGHT < 25, 'a', if(WEIGHT < 30, 'b', if(WEIGHT < 35, 'c', 'd')))

- Marcus

View solution in original post

MrBosch
Creator
Creator
Author

Thanks Marcus, the order might have been a problem. 

Perhaps for others: this is the solution I have implemented:

=If ([BMI] < 18.5, 'Text for BMI less than 18.5'
,If ([BMI] >= 18.5 and [BMI] <25, 'Text for BMI between 18.5 and 25'
,If ([BMI] >= 25 and [BMI] <30, 'Text for BMI between 25 and 30'
,If ([BMI] >= 30 and [BMI] <90, 'Text for BMI BMI above 30'
,''
))))

So I leave the ELSE (row 5 in the code above) out and define all possible conditions. If you don't select a single occurence it will then not show the ELSE text (which I did see initially when the whole population had an average BMI of 25.7).

Also: don't use a ' in the Text area... (Yup made that mistake too and couldn't initially figure out why the expression gave an error. You can solve this by the escape sequence double quote: ''

Hope this helps someone someday.

View solution in original post

4 Replies
marcus_sommer

Maybe something like: if(WEIGHT < 50, 'a', if(WEIGHT > 75, 'c', 'b'))

- Marcus

MrBosch
Creator
Creator
Author

Thanks Marcus. Great solution. Perhaps one more addition: now the test is <50 A, >75 B and else (between 50-75) C.

What would be the syntax if someone wants to add more conditions? So... to get 'D'?

So: 
WEIGHT <25 'A'
WEIGHT 25-30 'B'
WEIGHT 30-35 'C'
WEIGHT >35 'D'

marcus_sommer

In general quite similar - and if the order - ascend or descend - of the check is continuously you don't need to check for between. This means the following should be working:

if(WEIGHT < 25, 'a', if(WEIGHT < 30, 'b', if(WEIGHT < 35, 'c', 'd')))

- Marcus

MrBosch
Creator
Creator
Author

Thanks Marcus, the order might have been a problem. 

Perhaps for others: this is the solution I have implemented:

=If ([BMI] < 18.5, 'Text for BMI less than 18.5'
,If ([BMI] >= 18.5 and [BMI] <25, 'Text for BMI between 18.5 and 25'
,If ([BMI] >= 25 and [BMI] <30, 'Text for BMI between 25 and 30'
,If ([BMI] >= 30 and [BMI] <90, 'Text for BMI BMI above 30'
,''
))))

So I leave the ELSE (row 5 in the code above) out and define all possible conditions. If you don't select a single occurence it will then not show the ELSE text (which I did see initially when the whole population had an average BMI of 25.7).

Also: don't use a ' in the Text area... (Yup made that mistake too and couldn't initially figure out why the expression gave an error. You can solve this by the escape sequence double quote: ''

Hope this helps someone someday.