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

如何使用SQL解决case语句查询时结果行重复的问题

问题根因
  • 原SQL将CASE表达式的结果纳入了GROUP BY的分组维度,同一个姓名的不同Value记录会被拆分为独立分组,因此出现多行重复数据。
  • 该场景属于典型的行转列需求,需要将CASE逻辑放入聚合函数内,仅保留姓名作为唯一分组维度即可实现单行合并。
可用查询代码
SELECT 
    Name,
    MAX(CASE WHEN LTRIM(Value) = 'Car' THEN 'true' ELSE 'false' END) AS car,
    MAX(CASE WHEN LTRIM(Value) = 'Train' THEN 'true' ELSE 'false' END) AS train,
    MAX(CASE WHEN LTRIM(Value) = 'Bus' THEN 'true' ELSE 'false' END) AS bus,
    MAX(CASE WHEN LTRIM(Value) = 'Bike' THEN 'true' ELSE 'false' END) AS bike
FROM sourceTbl
GROUP BY Name
-- 如需仅查询David 可取消注释下一行
-- WHERE Name = 'David'
逻辑说明
  • 聚合函数MAX()可以实现同一个姓名下的结果合并:只要存在任意一条符合条件的记录,就返回true,无符合条件记录则返回false,完全匹配预期输出。
  • 代码中增加了LTRIM()函数用于处理测试数据中Bus字段前的多余空格,避免匹配失败,若实际生产数据无格式问题可删除该函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:24:03