IIf function will check one condition and if it is true then the it will return the Next expression ( 2nd one ) and if False then it will return the 3rd expression.
Here is the syntax
We will use our student table to display the students who have passed the exam. Mark is checked and if mark is greater than equal to 60 then the result is declared as Pass , otherwise it is Failed.
Here is the query
SELECT id,name,mark, IIF(mark >=60, 'PASS','FAIL') as Result
FROM `student` LIMIT 0,10
We have limited number of results to 10 only by adding Limit query, you can go as per your requirement.
Output is here.
id
name
mark
Result
1
John Deo
75
PASS
2
Max Ruin
85
PASS
3
Arnold
55
FAIL
4
Krish Star
60
PASS
5
John Mike
60
PASS
6
Alex John
55
FAIL
7
My John Rob
78
PASS
8
Asruid
85
PASS
9
Tes Qry
78
PASS
10
Big John
55
FAIL
Let us try a more complex query including SUM of columns. We will use our student3 table for this. Copy the code to create the table.
SELECT id,name, social + math + science AS total,
IIF(social + math + science > 200, 'Pass','Fail') AS Result
FROM student3;
id
name
total
Result
2
Max Ruin
226
Pass
3
Arnold
170
Fail
4
Krish Star
180
Fail
5
John Mike
230
Pass
6
Alex John
225
Pass
7
My John Rob
208
Pass
8
Asruid
255
Pass
9
Tes Qry
208
Pass
10
Big John
150
Fail
Using aggregate function with GROUP BY
SELECT id,name, SUM(social + math + science ) as Total,
IIF(SUM(social + math + science ) > 200, 'Pass','Fail') as Result
from student3 GROUP BY id;
SELECT
SUM(IIF(class='Three',1,0)) as THREE,
SUM(IIF(class='Four',1,0)) as FOUR,
SUM(IIF(class='Five',1,0)) as FIVE ,
SUM(IIF(class='Six',1,0)) as SIX,
SUM(IIF(class='Seven',1,0)) as SEVEN,
SUM(IIF(class='Eight',1,0)) as EIGHT,
SUM(IIF(class='Nine',1,0)) as NINIE
FROM student
Output is here
THREE
FOUR
FIVE
SIX
SEVEN
EIGHT
NINIE
3
9
3
7
10
1
2
Now let us use COUNT, here we will return NULL for False condition of IIF status checking.
SELECT
COUNT(IIF(class='Three',1,NULL)) as THREE,
COUNT(IIF(class='Four',1,NULL)) as FOUR,
COUNT(IIF(class='Five',1,NULL)) as FIVE ,
COUNT(IIF(class='Six',1,NULL)) as SIX,
COUNT(IIF(class='Seven',1,NULL)) as SEVEN,
COUNT(IIF(class='Eight',1,NULL)) as EIGHT,
COUNT(IIF(class='Nine',1,NULL)) as NINIE
FROM student
Output is here
THREE
FOUR
FIVE
SIX
SEVEN
EIGHT
NINIE
3
9
3
7
10
1
2
Let us crate a report using our student table to display total number of different grades in each class.
SELECT class,
SUM( IIF( mark <50, 1, 0 ) ) AS grade_C,
SUM( IIF( mark BETWEEN 50 AND 69 , 1, 0 ) ) AS grade_B,
SUM( IIF( mark >=70, 1, 0 ) ) AS grade_A
FROM `student` GROUP BY class