我有下表:
City | Inhabitants | Magnitude
---------+-------------+--------
Zuerich | 100000 | city
London | 5000000 | city
New York | 5000000 | city
我想读出一个选择查询,如果有500万居民,它必须像这样给出“大城市”:
City | Inhabitants | Magnitude
---------+-------------+---------
Zuerich | 100000 | city
London | 5000000 | bigcity
New York | 5000000 | bigcity
我已经尝试过这个案例陈述,但它不起作用
SELECT
CASE magnitude
WHEN inhabitants LIKE '%5000000%'
THEN 'bigcity'
ELSE NULL
END AS magnitude
我总是收到“缺少关键字”错误。
如何正确编写此查询?
答案 0 :(得分:2)
为什么使用LIKE
?这是一个数字吗?可以是050000000吗?还是500000005?如果不是LIKE
是不必要的,应该使用正常比较。
此外,ELSE null
不正确,因为您似乎希望替代方案为city
SELECT t.city,
t.inhabitants,
CASE WHEN t.inhabitants = '5000000' THEN 'bigcity'
ELSE t.magnitude
END as magnitude
FROM YourTable t
如果我的假设是错误的,请将您与LIKE
的比较替换为您使用它。
答案 1 :(得分:0)
您的CASE
语法有点不对劲。它应该是
case when <condition> then <value> else <default> end
所以对于你的情况应该是
select case
when inhabitants like '%5000000%' then 'bigcity'
else 'City' end as Magnitude