本文详解如何在 mysql 中按月份如 july、august对 salary_details 表中的 amount 字段进行横向分组聚合生成“姓名为行、月份为列”的透视报表并提供兼容 mysql 的标准 sql 写法及 php 集成注意事项。 本文详解如何在 mysql 中按月份如 july、august对 salary_details 表中的 amount 字段进行横向分组聚合生成“姓名为行、月份为列”的透视报表并提供兼容 mysql 的标准 sql 写法及 php 集成注意事项。MySQL 原生不支持 PIVOT 关键字该语法属于 SQL Server / Oracle 等数据库因此直接套用问题答案中带 PIVOT 的 SQL 会在 MySQL 中报错。要实现在 MySQL 中按月份横向展示工资汇总即每行为一个员工姓名每列为一个月份单元格为该员工当月金额总和必须采用条件聚合Conditional Aggregation方式这是 MySQL 最稳定、最高效且跨版本兼容的解决方案。? 正确写法使用 CASE SUM 实现动态列透视假设 salary_details 表结构如下基于常见实践推断CREATE TABLE salary_details ( id INT PRIMARY KEY, name VARCHAR(50), month VARCHAR(20), -- 如 July, August建议统一英文或标准化格式推荐存为 DATE 或 YEAR-MONTH amount DECIMAL(10,2));以下 SQL 可精确生成“姓名 × 月份”交叉汇总表支持任意指定月份SELECT name, SUM(CASE WHEN month July THEN amount ELSE 0 END) AS July, SUM(CASE WHEN month August THEN amount ELSE 0 END) AS August, SUM(CASE WHEN month September THEN amount ELSE 0 END) AS September, SUM(amount) AS TotalFROM salary_detailsGROUP BY nameORDER BY name;? 说明 Mokker AI AI产品图添加背景