我有一个 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'
...
这很好用,但看起来很丑。
我想将它转换成如下所示:
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'
...
显然第二个查询看起来更好,因为我不必多次编写复杂的表达式。但它正在出错。
Incorrect syntax near the keyword 'between'.
有人可以让我知道我在这里做错了什么吗?
更新:
正如所指出的,我已经更改了问题中的查询以使范围成为排他性的。
最佳答案
你想要的是不可能的,因为 between
语句的语法需要一个表达式来测试,因为它是第一个参数:
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
所以你坚持使用第一种语法。
附带说明一下,您的范围有点偏离 between uses inclusive ranges,但 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'
关于sql - sql server中基于BETWEEN运算符编写case语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29204602/