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

SQL技术需求:对重复ID去重并生成活动状态布尔列

需求与SQL实现方案

需求说明

现有数据存在ID重复但对应Activity不同的记录,需编写SQL实现以下效果:

  • 返回所有去重后的ID
  • 新增Email、Appointment、Phone call三列,当该ID对应的Activity与列名匹配时,列值为True,否则为False

现有数据

IDActivity
101Email
101Appointment
102Campaign
103Phone call
104Appointment

已编写的部分SQL语句

SELECT id,
MAX(CASE WHEN activity='Phone Call' THEN TRUE ELSE FALSE END) AS PhoneCall, 
MAX(CASE WHEN activity='Appointment' THEN TRUE ELSE FALSE END) AS Appointment,
MAX(CASE WHEN activity='Email' THEN TRUE ELSE FALSE END) AS Email

完整修正后的SQL语句

原SQL存在两处问题:一是缺少GROUP BY id(使用聚合函数MAX必须按ID分组),二是Phone Call的大小写与数据中的Phone call不匹配,会导致匹配失败。以下是修正后的完整语句:

SELECT id,
MAX(CASE WHEN activity='Email' THEN TRUE ELSE FALSE END) AS Email,
MAX(CASE WHEN activity='Appointment' THEN TRUE ELSE FALSE END) AS Appointment,
MAX(CASE WHEN activity='Phone call' THEN TRUE ELSE FALSE END) AS `Phone call`
FROM your_table_name
GROUP BY id;

注意:将your_table_name替换为实际表名;Phone call列名包含空格,需用反引号(MySQL)或方括号(SQL Server)包裹,不同数据库语法略有差异。

期望执行结果

IDEmailAppointmentPhone call
101TrueTrueFalse
102FalseFalseFalse
103FalseFalseTrue
104FalseTrueFalse

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:15:35