mysql实现pivot
时间: 2023-10-16 22:15:33 浏览: 108
PivotTable:从 MySQL 查询生成和呈现数据透视表
在 MySQL 中没有内置的 PIVOT 函数,但可以通过以下方法实现类似于 PIVOT 的功能:
假设有以下表:
```sql
CREATE TABLE sales (
year INT,
month INT,
product_name VARCHAR(20),
sales_amount DECIMAL(10, 2)
);
INSERT INTO sales VALUES
(2020, 1, 'Product A', 1000),
(2020, 1, 'Product B', 2000),
(2020, 2, 'Product A', 1500),
(2020, 2, 'Product B', 2500),
(2020, 3, 'Product A', 1200),
(2020, 3, 'Product B', 2800);
```
现在要将表格转换成以下形式:
| year | month | Product A | Product B |
|------|-------|-----------|-----------|
| 2020 | 1 | 1000 | 2000 |
| 2020 | 2 | 1500 | 2500 |
| 2020 | 3 | 1200 | 2800 |
可以使用以下 SQL 查询语句实现:
```sql
SELECT year, month,
SUM(CASE WHEN product_name = 'Product A' THEN sales_amount ELSE 0 END) AS 'Product A',
SUM(CASE WHEN product_name = 'Product B' THEN sales_amount ELSE 0 END) AS 'Product B'
FROM sales
GROUP BY year, month;
```
这个查询语句使用了 CASE 表达式和聚合函数 SUM(),将不同产品的销售额分别计算并汇总到对应的列中。最后使用 GROUP BY 对年份和月份进行分组,得到最终的结果。
阅读全文