mysql竖表变横表
时间: 2024-05-29 17:07:15 浏览: 194
MySQL中,竖表指的是将同一类别的数据存储在同一张表中,每个数据都是独立的一行。横表则是将同一个数据的多个属性存储在同一行中。竖表与横表的设计各有优缺点,在某些场景下,将竖表转为横表可以更方便地进行数据分析和展示。
竖表变横表的过程可以使用MySQL中的pivot操作实现,其基本语法如下:
```
SELECT
<聚合列>,
MAX(CASE WHEN <条件1> THEN <值1> END) AS <列名1>,
MAX(CASE WHEN <条件2> THEN <值2> END) AS <列名2>,
...
FROM
<表名>
GROUP BY
<聚合列>;
```
其中,`<聚合列>`指需要进行聚合操作的列,`<条件>`指用于进行分类的列,`<值>`指需要进行展示的列。
例如,假设有如下竖表:
| id | category | value |
|--|
| 1 | A | 100 |
| 1 | B | 200 |
| 2 | A | 300 |
| 2 | B | 400 |
我们可以使用如下语句将其转换为横表:
```
SELECT
id,
MAX(CASE WHEN category = 'A' THEN value END) AS 'A',
MAX(CASE WHEN category = 'B' THEN value END) AS 'B'
FROM
table_name
GROUP BY
id;
```
转换后的横表如下:
| id | A | B |
|----|-----|-----|
| 1 | 100 | 200 |
| 2 | 300 | 400 |
阅读全文