Вы можете просто сделать:
select type, avg(case when value in (1, 2) then 1.0 else 0 end)
from table1
where code = 'Q2'
group by type;
Ваш пример близок. Просто используйте синтаксис Crystal, как показано здесь:
stringvar val := {table.level};
if {table.uom_id} = 5 then
val := val + ' feet'
else
val := val + ' meters';
//to return a value, just plop it down at the end
val
Но если Вы хотите что-то немного более краткое, используйте это:
if {table.uom_id} = 5 then
{table.level} + ' feet'
else
{table.level} + ' meters';