SQL Server supports 2 types of Case statements;
CASE <expression>
WHEN <x> then <y>
WHEN <z> then <a>
...
END
This one is useful if you can easily slot <expression> into singular value buckets.
The other one is
CASE
WHEN <expression1> then <y>
WHEN <expression2> then <a>
...
END
Where each <expression> is fully evaluated again and again. Obviously if you are calling a function and it can return one of 10 values, it would not be advisable to use the 2nd form since it may call the function 10 times to get to the last branch.