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

BigQuery CASE语句语法错误求助:提示预期输入结束却遇CASE关键字

BigQuery SQL语法错误修复建议

你的SQL代码存在三个语法/逻辑问题,导致报错,逐一修正如下:

  • SELECT子句格式错误:SELECT *后缺少逗号,BigQuery会认为SELECT子句已结束,无法识别后续的CASE语句,需添加逗号分隔原有字段和新增计算字段。
  • WHEN条件后多余逗号:多个WHEN行里的THEN前多了逗号(比如WHEN Plan='1 Class Pass', THEN),这是语法错误,必须删除这些逗号。
  • ELSE值类型不匹配:原代码用"null"字符串,但DATE_ADD返回日期类型,字符串和日期类型冲突,应改用无引号的NULL空值。

修正后的完整代码:

SELECT *,
  CASE 
    WHEN Plan='1 Class Pass' THEN DATE_ADD(DATE(Date), INTERVAL 3 MONTH)
    WHEN Plan='10 Class Pass' THEN DATE_ADD(DATE(Date), INTERVAL 3 MONTH)
    WHEN Plan='20 Class Pass' THEN DATE_ADD(DATE(Date), INTERVAL 3 MONTH)
    WHEN Plan='40 Class Pass' THEN DATE_ADD(DATE(Date), INTERVAL 3 MONTH)
    WHEN Plan='1 MONTH UNLIMITED' THEN DATE_ADD(DATE(Date), INTERVAL 1 MONTH)
    WHEN Plan='3 MONTH UNLIMITED' THEN DATE_ADD(DATE(Date), INTERVAL 3 MONTH) 
    ELSE NULL 
  END AS expire_date 
FROM `table_Transactions`

另外可以优化重复条件,把返回3个月有效期的产品合并,让代码更简洁:

SELECT *,
  CASE 
    WHEN Plan IN ('1 Class Pass', '10 Class Pass', '20 Class Pass', '40 Class Pass', '3 MONTH UNLIMITED') 
      THEN DATE_ADD(DATE(Date), INTERVAL 3 MONTH)
    WHEN Plan='1 MONTH UNLIMITED' 
      THEN DATE_ADD(DATE(Date), INTERVAL 1 MONTH)
    ELSE NULL 
  END AS expire_date 
FROM `table_Transactions`

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:01:06