sql server中基于BETWEEN运算符编写case语句

Sou*_*avA 5 sql sql-server

我有一个CASE声明,如下所示:

SELECT CASE 
WHEN <expression>> BETWEEN 0 AND 10 THEN '0-10'
WHEN <<expression>> BETWEEN 11 AND 20 THEN '11-20'
WHEN <<expression>> BETWEEN 21 AND 30 THEN '21-30'
...
Run Code Online (Sandbox Code Playgroud)

这很好用,但看起来很丑。

我想将其转换为如下所示的内容:

SELECT CASE <expression>>
WHEN  BETWEEN 0 AND 10 THEN '0-10'
WHEN  BETWEEN 11 AND 20 THEN '11-20'
WHEN  BETWEEN 21 AND 30 THEN '21-30'
...
Run Code Online (Sandbox Code Playgroud)

显然,第二个查询看起来更好,因为我不必多次编写该复杂的表达式。但它出错了。

Incorrect syntax near the keyword 'between'.
Run Code Online (Sandbox Code Playgroud)

有人可以让我知道我在这里做错了什么吗?

更新:

正如所指出的,我已经更改了问题中的查询以使范围具有独占性。

Mud*_*san 0

您可以尝试使用子查询

SELECT CASE 
WHEN ColName BETWEEN 0 AND 10 THEN '0-10'
WHEN ColName BETWEEN 10 AND 20 THEN '10-20'
WHEN ColName BETWEEN 20 AND 30 THEN '20-30'
...

FROM
(
 SELECT <<expression>> as ColName
 FROM tableName
) Z
Run Code Online (Sandbox Code Playgroud)