when”在我的代码中不起作用?

sxpgvts3  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(424)

这是我的er图

我想把 stars 中的属性 business 把table变成这样:
2.0-3.0星='2-3'
4.0-5.0星='4-5'
其他='无'
我试着用这个代码:

select case b.stars
when (b.stars >= 2.0 and b.stars <=3.0) then '2-3'
when (b.stars >= 4.0) then '4-5'
else 'none'
end stars_group
from business b

但如果在这个表中不起作用,如何解决这个问题?

yizd12fk

yizd12fk1#

你把这两种情况搞混了。您需要具有单独条件的版本:

select (case when (b.stars >= 2.0 and b.stars <= 3.0) then '2-3'
             when (b.stars >= 4.0) then '4-5'
             else 'none'
        end) as stars_group

如果您只是在使用相等,那么可以使用简单的case表达式—但是比较需要严格相等:

select (case trunc(b.stars)
             when 2 then 'Two'
             when 3 then 'Three'
             else 'none'
        end) as stars_group

对于不等式,你需要一个搜索的例子,其中 where 子句进行求值以确定第一个 then 这是返回的。搜索的案例之间没有表达式 case 以及 where .

相关问题