首页 >数据库 >mysql教程 >如何使用 GROUP BY 和多个数据 ID 透视 MySQL 查询结果?

如何使用 GROUP BY 和多个数据 ID 透视 MySQL 查询结果?

Barbara Streisand
Barbara Streisand原创
2024-11-07 17:09:03918浏览

How to Pivot MySQL Query Results with GROUP BY and Multiple Data IDs?

使用 GROUP BY 的 MySQL PIVOT 查询结果

问题:

将数据库表转换为将行显示为列,按指定键(例如时间戳)对数据进行分组,同时确保每个键的所有数据值都显示在相应的列中。

建议的查询:

SELECT d.data_timestamp,
       SUM(IF(data_id = 1, data_value, 0)) AS 'input_1',
       SUM(IF(data_id = 2, data_value, 0)) AS 'input_2',
       ...
       SUM(IF(data_id = 20, data_value, 0)) AS 'input_20'
FROM data
GROUP BY d.data_timestamp
ORDER BY d.data_timestamp ASC

解释:

  • 外部查询从数据表中选择不同的数据时间戳。
  • 对于每个数据时间戳,查询计算使用 SUM() 聚合中的 IF() 函数计算每个 data_id 的数据值总和。
  • 如果 data_id 与所需的 id 匹配(例如,input_1 为 1),则将相应的数据值添加到总和中;否则,添加 0。
  • 对每个 data_id 重复此计算,最多 20,为每个不同的 data_id 创建一列。
  • 最终结果按数据时间戳分组并按升序排序

限制:

  • 此方法需要查询中每个 data_id 的显式总和,如果存在大量 id。
  • 根据具体要求和数据结构,可以使用涉及 CASE 或多级 JOIN 的替代方法。

以上是如何使用 GROUP BY 和多个数据 ID 透视 MySQL 查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn