Мне нужно назначить два значения для моего выбора на основе оператора CASE. В псевдо:Как назначить несколько значений в инструкции 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, например, вы обычно делаете это на другом (скриптовом) языке, и если да, не могли бы вы объяснить, как это сделать?
Использование функций повышения читабельности и ремонтопригодность, но они разрушат производительность. –
create table Category (Categoryname, FoodName) использовать соединение с исходной таблицей –
В этом случае я ценю ремонтопригодность и удобочитаемость по производительности, так как этот скрипт должен запускаться только один раз в день, в течение ночи. Я не ожидаю никаких проблем. – Pr0no