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

使用CASE语句按日期拆分video_views列生成多列失败求助

问题分析与修正方案

你的SQL代码存在两个关键问题:

  1. 开头多余的video_views AS破坏了CASE语句的结构,导致语法错误
  2. 表名的引号不匹配(table_name'应该改为成对的反单引号table_name)

要实现按年份拆分video_views为多列,每一列需要对应一个独立的CASE表达式,同时可以用ELSE指定不满足条件时的默认值(比如0或NULL)。

修正后的SQL代码如下:

SELECT
  CASE 
    WHEN date >= '2020-01-01' AND date <= '2020-12-31' THEN video_views 
    ELSE 0 
  END AS video_views_20,
  CASE 
    WHEN date >= '2021-01-01' AND date <= '2021-12-31' THEN video_views 
    ELSE 0 
  END AS video_views_21,
  CASE 
    WHEN date >= '2022-01-01' AND date <= '2022-12-31' THEN video_views 
    ELSE 0 
  END AS video_views_22
FROM `table_name`

补充说明

  • 如果希望不满足年份条件的行显示NULL而非0,直接去掉每个CASE里的ELSE 0即可
  • 部分SQL方言支持更简洁的年份判断,比如用EXTRACT(YEAR FROM date) = 2020替代日期区间判断,写法更简洁:
SELECT
  CASE WHEN EXTRACT(YEAR FROM date) = 2020 THEN video_views ELSE 0 END AS video_views_20,
  CASE WHEN EXTRACT(YEAR FROM date) = 2021 THEN video_views ELSE 0 END AS video_views_21,
  CASE WHEN EXTRACT(YEAR FROM date) = 2022 THEN video_views ELSE 0 END AS video_views_22
FROM `table_name`

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:05:33