怎么用MySQL语言进行行列装置?

这是我数据库里面的原数据,中国各省历年GDP总值。

img

我想把数据库里的数据行列转置,变成下面这张图那样

img

请问SQL语言要这么写?

看了下,量不是很大,如果是这样子,我建议使用Excel直接转置。可以先将数据导出到CSV或xlsx或xls,然后执行如下操作:

  1. 首先如下数据

img

  1. 其次选中需要处理的数据,然后复制

  2. 然后再新开一个空白sheet页面,右键后在菜单栏选中“选择性粘贴(S)...”

img

4.最后在选择性粘贴弹框中,在“运算”模块,勾选☑️“转置”即可。

img

5.然后就可以看到数据已经如你所愿

img

希望可以帮助到你。

SELECT t.years as '年度',
MAX(CASE t.city WHEN '上海' THEN t.gdp ELSE '' END ) as '上海',
MAX(CASE t.city WHEN '北京' THEN t.gdp ELSE '' END ) as '北京',
MAX(CASE t.city WHEN '郑州' THEN t.gdp ELSE '' END ) as '郑州'
from
(SELECT id,city,2019y as gdp,'2019y' as years from xiao_city_gdp
union all
SELECT id,city,2020y as gdp,'2020y' as years from xiao_city_gdp
union all
SELECT id,city,2021y as gdp,'2021y' as years from xiao_city_gdp) t
group by t.years;
请把字段、表名进行替换即可。

严格来说并没有这个功能,游标可以做到,但是这个是没有什么必要的。
首先性能就是一个大问题,一般来说我们不要在数据库做复杂的运算。
你在代码里想做这个其实很好做。
而且你的这个要求也很不合理。
你要知道,数据库的数据其实是行,无限的行,有限的列。
你这么转,如果我有5000万行数据呢?当然,你的业务上咩有,但是数据库的设计者要考虑这个

你要用一段程序去写。
或者动态语句。
5块钱提供思路给你。

这个最好在代码中实现,sql中不太好实现,可能就不能实现!

可以实现的,mysql行转列,见我的这篇博文,详细讲解


https://blog.csdn.net/weixin_43151418/article/details/124841383