oracle竖表转横表 求教:oracle数据库中怎么样能将一个纵表变成横表?
求教:oracle数据库中怎么样能将一个纵表变成横表?
一般行列转置,有两种做法 一种是case,但是由于case需要提前知道列数,所以在很多情况下不能满足 所以出现了动态语句case,通过动态SQL语句的组装,实现了动态的列的拼装。但是语句复杂度很高 所以另一种方式就是靠程序转置,使用一些Hash(JAVA)或Dictionary(C#)等一些对象,可以在程序中轻松地做出转置,但是也有缺点,缺点就是开销大,原本只处理一次的数据(只在数据库处理),现在需要处理两次(数据库一次,程序一次)
SQL如何进行纵表转横表?
SELECT 姓名,"数学"=MAX(CASE 课程 WHEN "数学" THEN 分数 ELSE 0 END),"语文"=MAX(CASE 课程 WHEN "语文" THEN 分数 ELSE 0 END) ,"英语"=MAX(CASE 课程 WHEN "英语" THEN 分数 ELSE 0 END) FROM TB GROUP BY 姓名 --或者 SELECT 姓名, ,"数学"=SUM(CASE 课程 WHEN "数学" THEN 分数 ELSE 0 END),"语文"=SUM(CASE 课程 WHEN "语文" THEN 分数 ELSE 0 END) ,"英语"=SUM(CASE 课程 WHEN "英语" THEN 分数 ELSE 0 END) FROM TB GROUP BY 姓名
SQL如何进行纵表转横表?
因为你没写commit用sqlplus那必须写提交命令,才算真正向数据库提交数据。当前主流应用还是使用pl/sql,支持command命令窗口,即包含了sqlplus界面的窗口。
oracle竖表转横表 sql竖表转横表 数据库横表和纵表的区别
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。