用于创建范围的 SQL 大小写表达式



我目前正在使用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

最新更新