急求一句简单的不定列转行的SQL,多谢!
急求一句简单的不定列转行的SQL,谢谢!!
表的内容大概是这样:
学生名 课程名 分数
张三 语文 80
张三 数学 82
张三 英语 77
李四 语文 90
李四 数学 89
李四 英语 67
想让列转行出来的效果是:
学生名 语文 数学 英语 总分
张三 80 82 77 239
李四 90 89 67 246
忘记补充了,这个课程的名字是不定的,不知道一共有多少门课。
实在不行,简单点效果能成这样也行:
姓名 分数
张三 80,82,77
李四 90,89,67
感谢各位无私帮助!
------解决思路----------------------
由于你的课程数量不确定,因此只能利用动态语句实现
用下面语句拼接sql语句,然后把拼接的结果拿去执行
------解决思路----------------------
如果是11g的话可以用pivot转换,否则就比较麻烦了,我都是在结果集或页面处理
表的内容大概是这样:
学生名 课程名 分数
张三 语文 80
张三 数学 82
张三 英语 77
李四 语文 90
李四 数学 89
李四 英语 67
想让列转行出来的效果是:
学生名 语文 数学 英语 总分
张三 80 82 77 239
李四 90 89 67 246
忘记补充了,这个课程的名字是不定的,不知道一共有多少门课。
实在不行,简单点效果能成这样也行:
姓名 分数
张三 80,82,77
李四 90,89,67
感谢各位无私帮助!
------解决思路----------------------
由于你的课程数量不确定,因此只能利用动态语句实现
用下面语句拼接sql语句,然后把拼接的结果拿去执行
select 'select 学生名,'
------解决思路----------------------
wmsys.wm_concat('sum(decode(课程名,'''
------解决思路----------------------
课程名
------解决思路----------------------
''',分数)) as "'
------解决思路----------------------
课程名
------解决思路----------------------
'"')
------解决思路----------------------
',sum(分数) as 总分
from T
group by 学生名'
from (select distinct 课程名 from T)
------解决思路----------------------
如果是11g的话可以用pivot转换,否则就比较麻烦了,我都是在结果集或页面处理