我需要从“世界”表中提取并添加一个CASE WHEN语句,以便在国家“名称”为“B%”时将其设置为“加勒比海”更改为“北美”,但是当名称不是像'B%'那么大陆将='南美洲'。还需要按名称的ASC顺序。
我知道执行此操作的所有命令,但似乎无法以正确的顺序或语法获取它们。下面是问题和截图。
答案 0 :(得分:0)
你只需要打破你的问题。请记住CASE
将按顺序检查案例...因此,如果第一个案例的评估结果为TRUE
,则永远不会检查该行的以下测试。
你在多条件案件陈述中被挂断了。具体而言,对于您询问的部分(北美和南美),您需要检查两个条件。
所以,按照他们要求的顺序逐步完成。
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'
现在把它们放在一起......
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