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

基于年份列生成自定义列的CASE表达式重叠数据处理需求

解决Year列生成多分类自定义列的重叠问题

需求是基于year列生成自定义分类列,初始的CASE逻辑如下:

year <= '2017' THEN 'Old Cars'
year BETWEEN '2018' AND '2023' THEN 'New Cars'
year = '2023' THEN 'Current Year Cars'

但这里2023年同时属于两个分类,常规CASE语句只能返回第一个匹配的结果,无法实现同一年份对应多个分类的效果。要得到如下预期输出:

2015 - Old Cars
2016 - Old Cars
2017 - Old Cars

2018 - New Cars
2019 - New Cars
2020 - New Cars
2021 - New Cars
2022 - New Cars
2023 - New Cars

2023 - Current Year Cars

可以用UNION ALL拆分三个逻辑分支来实现,这样同一行数据可以生成多条分类记录:

-- 假设表名为cars,year为目标列
SELECT year, 'Old Cars' AS car_category
FROM cars
WHERE year <= '2017'

UNION ALL

SELECT year, 'New Cars' AS car_category
FROM cars
WHERE year BETWEEN '2018' AND '2023'

UNION ALL

SELECT year, 'Current Year Cars' AS car_category
FROM cars
WHERE year = '2023'
-- 按年份和分类排序,确保输出顺序符合预期
ORDER BY year, car_category;

原理说明

常规CASE语句在每一行只能返回一个分类值,而UNION ALL可以将三个独立查询的结果合并:

  1. 第一个查询筛选2017及更早的年份,标记为'Old Cars'
  2. 第二个查询筛选2018-2023的年份,标记为'New Cars'
  3. 第三个查询单独筛选2023年,标记为'Current Year Cars'
    这样2023年就会在结果中出现两次,分别对应两个分类,完全匹配预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:40:48