mysql 行列转换
时间: 2023-07-02 10:10:57 浏览: 101
sql行列转换[借鉴].pdf
MySQL 中可以使用 `CASE WHEN` 和 `GROUP BY` 语句来实现行列转换。
首先,我们需要使用 `CASE WHEN` 语句将每一行的值转换为我们需要的列。例如,假设我们有一个 `orders` 表,其中包含订单号、客户姓名和订单金额:
```
+------------+---------------+--------+
| order_id | customer_name | amount |
+------------+---------------+--------+
| 1 | Alice | 100 |
| 2 | Bob | 200 |
| 3 | Alice | 150 |
| 4 | Bob | 300 |
+------------+---------------+--------+
```
现在我们想要将客户姓名作为列,订单金额作为值进行行列转换。我们可以使用以下 SQL 语句:
```
SELECT
order_id,
SUM(CASE WHEN customer_name = 'Alice' THEN amount ELSE 0 END) AS Alice,
SUM(CASE WHEN customer_name = 'Bob' THEN amount ELSE 0 END) AS Bob
FROM
orders
GROUP BY
order_id;
```
执行以上 SQL 语句后,将得到以下结果:
```
+------------+-------+-----+
| order_id | Alice | Bob |
+------------+-------+-----+
| 1 | 100 | 0 |
| 2 | 0 | 200 |
| 3 | 150 | 0 |
| 4 | 0 | 300 |
+------------+-------+-----+
```
以上 SQL 语句中,我们使用了 `SUM` 函数来计算每个客户的订单金额,如果客户姓名不是目标客户,则将金额设置为 0。
这样,我们就成功地将行列转换为了我们需要的形式。
阅读全文