首页 新闻 会员 周边

oracle数据库一行提取列,显示多行.

0
悬赏园豆:10 [已解决问题] 解决于 2014-08-28 11:15

效果就是这样的... 下面的语句就是数据库的语句...

 

要求就是: 把语文 数学 英语的那个列拆分出来显示

 

用分析函数, 开窗函数哦...

 

 

在线等!~~ 急...谢谢了.

问题补充:

亲们, 不是用连接函数哦,是用开窗函数或者分析函数~

ζ  简单ヾ°的主页 ζ  简单ヾ° | 初学一级 | 园豆:93
提问于:2014-08-28 10:01
< >
分享
最佳答案
0

select RECORD_ID AS ID,STU_NAME AS 姓名, STU_NO AS 学号,'语文' AS 科目,CHINESE AS 成绩 from TM_STU a where STU_NO in (select STU_NO from TM_STU) union all

select RECORD_ID AS ID,STU_NAME AS 姓名, STU_NO AS 学号,'数学' AS 科目,[MATH] AS 成绩 from TM_STU a where STU_NO in (select STU_NO from TM_STU) union all

select RECORD_ID AS ID,STU_NAME AS 姓名, STU_NO AS 学号,'英语' AS 科目,ENGLISH AS 成绩 from TM_STU a where STU_NO in (select STU_NO from TM_STU) ORDER BY RECORD_ID

收获园豆:1
会飞的金鱼 | 小虾三级 |园豆:881 | 2014-08-28 10:42

额..我开始也是查到这个...  但是这个不是开窗函数吧,...  我想要的就是用开窗函数和分析函数...

 

 sum(decode(t.course, '语文', score, null)) as "语文"

 

 

比如decode 这些函数...  

ζ  简单ヾ° | 园豆:93 (初学一级) | 2014-08-28 10:44

算了, 你这个我学到了不少哦..  呵呵..谢谢了...虽然没得到我要的答案...晚点我会把我的答案公布... 我再研究研究...

ζ  简单ヾ° | 园豆:93 (初学一级) | 2014-08-28 11:16
其他回答(1)
0

你这个不就是列转行么,给你个地址:http://www.2cto.com/database/201108/100792.html

这里面行转列,列转行都有啦!

收获园豆:9
Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-08-28 10:05

这就是最常见的列转行,主要原理是利用SQL里面的union   

 

 

要求是开窗函数和分析函数啊...     如果是这种方法的话, 早回了....

支持(0) 反对(0) ζ  简单ヾ° | 园豆:93 (初学一级) | 2014-08-28 10:31

@ζ  简单ヾ°:你是在找这种?

select student,sum(decode(subject,'语文', grade,null)) "语文", 
sum(decode(subject,'数学', grade,null)) "数学", 
sum(decode(subject,'英语', grade,null)) "英语" 
from table 
group by student 

支持(0) 反对(0) Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-08-28 10:51

@Alex_QY1987: 这是另外一个题的.. 嗯.. 是这种样子... 呵呵...

支持(0) 反对(0) ζ  简单ヾ° | 园豆:93 (初学一级) | 2014-08-28 11:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册