You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SWITCH语句中使用BETWEEN实现自定义GROUP BY范围分组

问题根因

你遇到的报错和SWITCH中BETWEEN的用法无关,是SQL语法的通用规则:所有出现在SELECT子句中、没有被聚合函数包裹的字段,必须完整出现在GROUP BY子句中。你当前GROUP BY的是SWITCH函数返回的分组标识,但SELECT里直接写了原始字段TheTmp,数据库无法确定分组内要返回哪一行的TheTmp值,因此抛出错误。
另外你原有的SWITCH写法存在参数顺序错误:SWITCH的参数规则是SWITCH(条件1, 返回值1, 条件2, 返回值2, ...),你写的SWITCH(TheTmp BETWEEN 0 AND 5,0,50,true)是把第二个条件和返回值写反了,不符合语法要求。

修正后的写法

你需要把SELECT子句的非聚合字段换成和GROUP BY完全一致的SWITCH表达式,同时修正SWITCH的参数顺序,如果你需要0-5区间合并为一组、大于5的数值单独分组,可使用如下SQL:

SELECT 
  SWITCH(TheTmp BETWEEN 0 AND 5, '0-5区间', TRUE, TheTmp) AS 分组标识,
  SUM(TheTmp*0.33) AS 计算结果
FROM MyTable
WHERE Name = 'TestName1'
GROUP BY SWITCH(TheTmp BETWEEN 0 AND 5, '0-5区间', TRUE, TheTmp)

该语句运行结果完全匹配你的需求:

  • 0-5区间行的计算结果为(1 + 1.58938597048424) * 0.33
  • 8.76669265399322行的计算结果为8.76669265399322 * 0.33

如果你一定要用数字作为分组标识,把SWITCH里的'0-5区间'换成0即可,逻辑完全一致。

内容的提问来源于stack exchange,提问作者TourEiffel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:18:03