怎么把这样一个表(aaa) year month amount 1991 1 1.1 1991 2 1.2 1991 3 1.3 1991 4 1.4 1992 1 2.1 1992 2 2.2 1992 3 2.3 1992 4 2.4 查成这样一个结果 year mi m2 m3 m4 1991 1.1 1.2 1.3 1.4 1992 2.1 2.2 2.3 2.4
时间: 2024-01-04 19:01:55 浏览: 67
您可以使用 SQL 语句中的 MAX 函数结合 CASE 表达式来实现这个转换,具体可参考如下代码:
```
SELECT year,
MAX(CASE WHEN month = 1 THEN amount ELSE NULL END) AS m1,
MAX(CASE WHEN month = 2 THEN amount ELSE NULL END) AS m2,
MAX(CASE WHEN month = 3 THEN amount ELSE NULL END) AS m3,
MAX(CASE WHEN month = 4 THEN amount ELSE NULL END) AS m4
FROM aaa
GROUP BY year
```
以上代码假设您的表名为 aaa,其中 year, month, amount 分别是年份、月份、金额三个字段。该 SQL 语句中,我们使用 GROUP BY 分组操作按照年份将记录分组,并在每个分组内使用 CASE 表达式根据月份选择对应的金额,使用 MAX 函数将选择出来的金额取最大值,以便在结果中呈现。最终结果中,每一行代表一个年份,包含了该年份下每个月份的金额。
相关问题
将表aaa: year month amount 1991 1 1.1 1991 2 1.2 1991 3 1.3 1991 4 1.4 1992 1 2.1 1992 2 2.2 1992 3 2.3 1992 4 2.4 查成这样的结果: year m1 m2 m3 m4 1991 1.1 1.2 1.3 1.4 1992 2.1 2.2 2.3 2.4
您可以使用 SQL 中的转换函数和条件聚合语句来实现这个结果,具体的 SQL 语句如下:
SELECT year,
MAX(CASE WHEN month = 1 THEN amount ELSE NULL END) AS m1,
MAX(CASE WHEN month = 2 THEN amount ELSE NULL END) AS m2,
MAX(CASE WHEN month = 3 THEN amount ELSE NULL END) AS m3,
MAX(CASE WHEN month = 4 THEN amount ELSE NULL END) AS m4
FROM aaa
GROUP BY year;
这个 SQL 语句会将每个年份的四个月的数据转换成一行,其中使用了条件聚合语句 CASE WHEN 和 MAX 函数,来将每个月的金额按照对应的列进行聚合。
阅读全文