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

MySQL数据表行转列查询求助:按日期聚合endpoint的nb200值

解决MySQL行转列(按日期聚合)的问题

嗨,这个问题我之前也踩过坑!你写的CASE语句已经找对了行转列的思路,不过因为缺少聚合函数和分组操作,所以才会得到分散的多行结果。咱们来调整一下:

正确的SQL语句

SELECT 
  date,
  MAX(CASE WHEN endpoint = 'toto' THEN nb200 END) AS 'toto',
  MAX(CASE WHEN endpoint = 'tata' THEN nb200 END) AS 'tata',
  MAX(CASE WHEN endpoint = 'tutu' THEN nb200 END) AS 'tutu'
FROM your_table_name  -- 记得替换成你的实际表名
GROUP BY date;

为什么这样能解决问题?

  • 聚合函数(MAX):同一个日期下,每个endpoint对应的nb200值只会出现一次,其他行都是NULL。用MAX可以过滤掉NULL,只保留该日期下对应endpoint的有效数值。因为你的表唯一键是(date, endpoint),所以用SUM、MIN也能得到同样的结果,选MAX只是更直观。
  • GROUP BY date:把相同日期的所有行合并成一行,这样每个日期就只会输出一条结果,正好符合你想要的格式。

效果验证

执行上面的SQL后,你会得到完全符合需求的结果:

datetototatatutu
d1111315
d2212325

内容的提问来源于stack exchange,提问作者M.Be

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:07:49