cat*_*ate 0 sql sql-server sql-server-2014
我需要有一个计算列Site_Condition,该列将基于Condition_Score同一表中另一列的数值返回一个文本值。
以下是我尝试插入“计算列规范”中的内容,但收到此消息:
验证公式时出错
我还尝试过使用下面的相同语法从脚本“创建表为”创建它,例如:Site_Condition AS(IF ....)
我究竟做错了什么?
IF([Condition_Score]<0.51,'Very poor',(ELSE
IF([Condition_Score]<1.51,'Poor', ELSE
IF([Condition_Score]<2.51,'Moderate',ELSE
IF([Condition_Score]<3.51,'Good',ELSE
IF([Condition_Score]>3.51,'Excellent'))))))
Run Code Online (Sandbox Code Playgroud)
在SQL中,我们使用CASE而不是IF
CASE WHEN [Condition_Score]<0.51 THEN 'Very poor'
WHEN [Condition_Score]<1.51 THEN 'Poor'
WHEN [Condition_Score]<2.51 THEN 'Moderate'
WHEN [Condition_Score]<3.51 THEN 'Good'
ELSE 'Excellent' END
Run Code Online (Sandbox Code Playgroud)
但是为了完整起见,这里是IIF()版本(请注意额外的“ I”,是“立即If”的缩写):
IIF([Condition_Score]<0.51, 'Very poor',
IIF([Condition_Score]<1.51, 'Poor',
IIF([Condition_Score]<2.51, 'Moderate',
IIF([Condition_Score]<3.51,'Good',
'Excellent'))))
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,IIF()直到Sql Server 2016才可用。
这些还修复了一个错误,即如果分数恰好是 3.51,则结果将是NULL。
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |