栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据库概念——行转列、列转行理解及实现(oracle&mySQL)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库概念——行转列、列转行理解及实现(oracle&mySQL)

tip:先看文章第二节的几篇短博文再看本文更佳

1.概念

       不管行转列还是列转行使用时同平时用的group by一样,一般要结合聚合函数使用(因为列名一定是唯一的,字段里的值并不一定是是唯一的,所以配合聚合函数使用)。(补充说明:行就是我们平时说的一条一条的记录,再具体点就是某一列的具体值;列就是字段,也就是列名)但是group by并不属于行转列和列转行的一种,不要混淆了,只是使用场景类似都是给你进行分组。补充:group by可以实现行转列是因为MySQL没有行转列的函数,便可用case when和group by配合实现行转列的功能而已。
       再通俗点就可以把数据表的行和列看成坐标轴的横轴和纵轴,只不过横轴是固定的,也就是我们平时说的字段名、表头,而纵轴并不是固定的,它可以沿着表头移动。理解了这个就不用怕什么是行转列和列转行了,剩下的就是该行/列的其他字段进行聚合操作了。

2.实现
  • oracle:
    • 行转列:PIVOT()函数:https://blog.csdn.net/Grady_Ne/article/details/106948554
    • 列转行:unpivot()函数:https://blog.csdn.net/shammy_feng/article/details/111921416
      tip:看到这可以回去了
  • mySQL:
    • 行转列:可以使用group by配合case when或者if()完成:
      https://www.csdn.net/tags/NtDaYg2sODQ5MDctYmxvZwO0O0OO0O0O.html
      https://blog.csdn.net/m0_37635053/article/details/124393805
    • 列转行:使用一个中间表:https://blog.csdn.net/wyqwilliam/article/details/82559023(从四开始看)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号