问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle数据列转成行

发布网友 发布时间:2022-04-22 20:42

我来回答

1个回答

热心网友 时间:2022-04-09 10:57

Oracle行转换为列是比较常见,网上常见的例子如下:

grades表:

student subject grade

student1 语文 80

student1 数学 70

student1 英语 60

student2 语文 90

student2 数学 80

student2 英语 10

转换为

语文 数学 英语

Student1 80 70 60

Student2 90 80 100

执行语句如下:

Select student,

sum(decode(subject,'语文',grade,null)) "语文",

sum(decode(subject,'数学',grade,null)) "数学",

sum(decode(subject,'英语',grade,null)) "英语"

from grades

group by student order by student;
Select student,sum(decode(subject,'语文',grade,null)) "语文",sum(decode(subject,'数学',grade,null)) "数学",sum(decode(subject,'英语',grade,null)) "英语"from gradesgroup by student order by student;
下面,介绍列转换为行的操作:
假设一个表test,记录如下:

表头  id proc1 proc2 proc3
记录  12 3.4 6.7 12.4

想变成如下格式:
表头 id proc value
记录 12 proc1 3.4
记录 12 proc2 6.7
记录 12 proc3 12.4

方法一:采用union all方法(这种方法会随着字段的增多,变得很长,不推荐)

select id,'proc1',proc1
from testjac where id=12
union all
select id,'proc2',proc2
from testjac where id=12
union all
select id,'proc3',proc3
from testjac where id=12;
select id,'proc1',proc1 from testjac where id=12 union all select id,'proc2',proc2 from testjac where id=12 union all select id,'proc3',proc3from testjac where id=12;
方法二:采用decode+系统视图USER_TAB_COLS(推荐):

select A.id,B.column_name,decode(B.column_name,'PROC1',A.proc1,'PROC2',A.proc2,'PROC3',A.proc3,null) value
from test A,(select column_name from user_tab_cols where column_id>1 and table_name='TEST') B
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦幻西游怎样查看自己怎么加的属性点阿? 我好长时间没玩了 .. 怎么... 梦幻西游怎么查看我各项加了多少点 卤肉料的配方 卤肉上色最好的配方前十 三国中曹操有几个儿子 曹植的意思是什么 曹操有多少个儿子?其中姓名叫什么? 简谱中1=c2/4是什么意思?别说几节几拍我不知道节和拍是什么意思 简谱四分之二什么意思 ...是鸡膏吗 放在老汤里行吗 怎么才能容于水 谢谢 怎么使用? oracle如何实现行转列 Oracle数据库行列转换 oracle查询行转列怎么写 oracle 行转列 Oracle 数据库行转列 oracle 行转列 ,这个要怎么转 oracle行转列 列转行求助 oracle行列转换问题 ORAClE sql如何实现行转列? Oracle列转行,行转列 oracle行列转换 oracle 行和列转换 oracle 行列转换 oracle 行转换为列 ORACLE行转列问题 如何在oracle中进行列行转换 小米怎么双开 我有对方的但是没他的手机请问怎么能看到微信的聊天记录..._百度问一问 怎么查看自己加入的所有群聊 qq怎么查看以前加过的群? oracle多行转多列 用开水烫面能做什么?有什么作用? 发面和烫面,用途都有哪些不同? 烫面适合做什么面点? 发面和烫面,用途有哪些不同? 烫面可以发酵吗? 半烫面,发面,烫面和死面,用途有什么不同呢? 烫面、发面、死面的区别是什么?用途又有什么不同? 烫面发面混合使用做油酥饼行吗? 一半烫面一半发面怎么炸油饼 面粉烫了一半另一半用凉水和面,其中还放了发酵粉,能做什么面食? 发面和烫面做出来的葱花饼,哪种做法会更好吃? 烫面加发面能烙饼吗 烫面发面冷水面 烫面和发面有什么不同?这两者都需要放酵母吗? 微信在国外能不能使用? 微信能在国外使用吗? 有谁知道?我过几天去国外旅游,手机微信在国外能用吗?需要办理其它手续吗... 微信在国外可以用吗? 偷渡到国外微信还能用吗