Вам просто нужно, чтобы сломать вашу проблему. Помните, что CASE
проверит случаи в порядке ... так что если первый случай оценивается до TRUE
, то следующие тесты никогда не проверяются для этой строки.
Вы получаете повесили трубку на несколько случаев. В частности, для той части, о которой вы просили (Северная Америка и Южная Америка), вам нужно проверить два условия.
- Является ли страна в Карибском бассейне?
- Название начинается с буквы B или нет?
Итак, пройдите через него в порядке, о котором они просили.
- Океания становится Австралазия:
when continent = 'Oceania' then 'Australasia'
- Страны Евразии и Турции идут в Европу/Азия:
when continent = 'Eurasia' or continent = 'Turkey' then 'Europe/Asia'
- Карибские острова, начиная с «B» идут в Северную Америку, другие карибские острова идут в Южной Америке:
when continent = 'Caribbean' and name like 'B%' then 'North America'
when continent = 'Caribbean' and name not like 'B%' then 'South America'
Теперь все это вместе ...
select
name,
continent,
case
when continent = 'Oceania' then 'Australasia'
when continent = 'Eurasia' or continent = 'Turkey' then 'Europe/Asia'
when continent = 'Caribbean' and name like 'B%' then 'North America'
when continent = 'Caribbean' and name not like 'B%' then 'South America'
else continent
end as NewContinent
from
world
order by
name asc
показать нам то, что вы попробовали, так что мы можем лучше понять, что вам нужно объяснение на. Также не заставляйте сообщество работать для этого, чтобы привести примеры данных в ваш вопрос и сделать ваши условия более понятными, чем просто в абзаце, возможно, маркированном списке? – Matt
использовать метод раннего выхода case-case (после того, как условие выполнено, оно завершается так) ... 'when continent = 'Caribbean' и имя типа 'B%', затем 'Северная Америка' , когда continent = 'Caribbean 'then' South America '' – xQbert