如果我有一个带有number
列的表,并且想基于number列中的值创建一个值为'high','medium'或'low'的新列,我可以使用如果/否则声明要执行此操作?如果是这样,怎么写?
我具有使用when / then语句创建列的代码:
use master
select
*,
case
when (number > 40) then 'high'
when (number between 30 and 40) then 'medium'
else 'low'
end as 'newColumn'
from
myTable
基本上,我试图理解if / else和when / then语句之间的区别,以及为什么要在另一个语句上使用它。
这个if / else代码不起作用,但是我不知道是否是因为我的编码错误:
use master
select
*,
if (number > 40)
'high'
else if (number between 30 and 40)
'medium'
else 'low'
from
test
答案 0 :(得分:1)
IF语句控制流并根据条件决定下一步要评估的内容,而CASE是返回期望值的函数。
当您将单个表达式与一系列唯一值进行比较时,CASE语句比IF语句更具可读性,而且效率更高。