Мне нужно присвоить два значения моему выбору на основе оператора CASE. В псевдо:
select
userid
, case
when name in ('A', 'B') then 'Apple'
when name in ('C', 'D') then 'Pear'
end as snack
from
table
;
Я присваиваю значение для snack
. Но допустим, я также хочу присвоить значение другой переменной, drink
, на основе тех же условий. Одним из способов было бы повторить вышеизложенное:
select
userid
, case
when name in ('A', 'B') then 'Apple'
when name in ('C', 'D') then 'Pear'
end as snack
, case
when name in ('A', 'B') then 'Milk'
when name in ('C', 'D') then 'Cola'
end as drink
from
table
;
Однако, если мне нужно назначить больше значений на основе тех же условий, скажем, food
, drink
, room
и т. д., этот код становится трудно поддерживать.
Есть ли лучший способ сделать это? Могу ли я поместить это в функцию SQL, как вы обычно делаете на другом (сценарном) языке, и если да, не могли бы вы объяснить, как это сделать?