我目前正在使用Microsoft SQL Server。我正在尝试在我的视图中使用大小写表达式来创建范围。
下面是一个示例:
- 最小范围不能低于 0。
- 最大范围不能超过 100。
- 预期输出 IE:
22.67-88.23
。
这是我尝试的。
CONVERT(varchar(12)
,(CASE WHEN (X.AVG - (2 * X.AVG)) < 0
THEN 0
END
+ '-'
+ CASE WHEN (X.AVG + (2 * X.AVG)) > 100
THEN 100
END
)) as Range
除了您
编辑的缺少的括号之外,您还需要包含一个else
子句,因为如果您的计算在第一个case
中高于 0
或低于第二个100
,您的版本不会返回值:
CONVERT(varchar(12)
,(CASE WHEN (X.AVG - (2 * X.AVG)) < 0
THEN 0
ELSE X.AVG - (2 * X.AVG)
END
+ '-'
+ CASE WHEN (X.AVG + (2 * X.AVG)) > 100
THEN 100
ELSE X.AVG - (2 * X.AVG)
END
)
) as Range
您可以将整个大小写表达式大大简化为此。这可能是您真正想要的,因为它似乎与您的书面解释相矛盾,但从逻辑上讲,它与您编码的内容相同。
case
when X.AVG * 3 > 100 then '100'
when X.AVG > 0 then '0'
else 'Invalid' --Or maybe you want to put convert(varchar(12), X.AVG) here?
end