sql 将行转列 并将转为列的值排序
时间: 2024-02-10 13:10:43 浏览: 31
您可以使用 MySQL 的 `CASE` 函数将行转列,并结合 `ORDER BY` 对转换后的列进行排序。例如,假设您有一个表 `sales`,其中包含每个用户的销售额。
| 用户名 | 月份 | 销售额 |
| ------ | --- | ------ |
| Alice | 1 | 1000 |
| Alice | 2 | 2000 |
| Alice | 3 | 3000 |
| Bob | 1 | 500 |
| Bob | 2 | 1000 |
| Bob | 3 | 1500 |
现在,您想按照每个用户的姓名,将每个月的销售额转换为每列一个月份的形式,您可以使用以下 SQL 查询语句:
```
SELECT username,
SUM(CASE WHEN month = 1 THEN sales ELSE 0 END) AS 'Month 1',
SUM(CASE WHEN month = 2 THEN sales ELSE 0 END) AS 'Month 2',
SUM(CASE WHEN month = 3 THEN sales ELSE 0 END) AS 'Month 3'
FROM sales
GROUP BY username
ORDER BY SUM(sales) DESC;
```
在此查询中,我们使用 `CASE` 函数将每个月的销售额转换为一列。然后,我们使用 `SUM` 函数将每个月的销售额相加,并按照总销售额降序排序。注意,在 `ORDER BY` 子句中,我们使用 `SUM(sales)` 而不是 `sales`,因为我们需要按照总销售额排序。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)