表T 如下:
A B c
1 数学 85
1 语文 90
2 英语 86
2 历史 91
. . .
. . .
. . .
. . .B字段的课程不确定,有N多种
变成
A 数学 语文 英语 历史 .......
1 85 90
2 86 91
.
.
.
就是将B字段内容变成行。oracle用sql如何实现,谢谢各位了!
最好不用存储过程!
A B c
1 数学 85
1 语文 90
2 英语 86
2 历史 91
. . .
. . .
. . .
. . .B字段的课程不确定,有N多种
变成
A 数学 语文 英语 历史 .......
1 85 90
2 86 91
.
.
.
就是将B字段内容变成行。oracle用sql如何实现,谢谢各位了!
最好不用存储过程!
sum(eng) 英语,sum(his) 历史
from(
select a,
decode(b,'数学',c,null) MAT,
decode(b,'语文',c,null) CHN,
decode(b,'英语',c,null) Eng,
decode(b,'历史',c,null) his
from t_12) group by a
不过不是我想要的结果,B字段的课程不止是这几种,有N多种。是decode不过来的,太多了。
嗯,一条sql很难搞定,用存储过程的动态sql才可以搞得定的。
动态的sql如何实现啊!
如果是要得到的列是固定的也就是所的B字段科目是确定的话,可以用以上的方式,比较简单,毕竟是sql就搞定了,如果是不固定的,就要用procedure了
参考这个点http://topic.csdn.net/u/20090512/14/169843a6-2b65-4e19-91fc-1731aae7b8d0.html