有个问题想请各位高手指导。
假设有一个表为:
id course grade
------------------------
u1 c1 g1
u1 c2 g2
u2 c1 g3
u2 c2 g4
要求转化为如下格式
id c1 c2
---------------------
u1 g1 g2
u2 g3 g4
要如何操作呢?上面可能写得不清楚,用个例子
id course grade
------------------------
小明 语文 60
小明 数学 65
小刚 语文 90
小刚 数学 95
要求转化为如下格式
id 语文 数学
-------------------------
小明 60 65
小刚 90 95
谢谢啦!
假设有一个表为:
id course grade
------------------------
u1 c1 g1
u1 c2 g2
u2 c1 g3
u2 c2 g4
要求转化为如下格式
id c1 c2
---------------------
u1 g1 g2
u2 g3 g4
要如何操作呢?上面可能写得不清楚,用个例子
id course grade
------------------------
小明 语文 60
小明 数学 65
小刚 语文 90
小刚 数学 95
要求转化为如下格式
id 语文 数学
-------------------------
小明 60 65
小刚 90 95
谢谢啦!
counter varchar(20), -- 参加考试人数
subject varchar(20), -- 科目
class varchar(20) -- 班级
); --表数据:
insert into tab
select '36', '英语' ,'一班' from dual
union all select '44', '英语', '二班' from dual
union all select '44', '数学', '二班' from dual
union all select '33', '语文', '一班' from dual
union all select '39', '语文', '三班' from dual --代码
select subject
,max(decode(class,'一班',counter))"一班"
,max(decode(class,'三班',counter))"三班"
,max(decode(class,'二班',counter))"二班"
from tab group by subject
--转换后:
SUBJECT 一班 三班 二班
1 数学 44
2 英语 36 44
3 语文 33 39
select id,max(decode(course,'语文',grade)) 语文,
max(decode(course,'数学',grade)) 数学
from tb
group by id
counter varchar(20), -- 参加考试人数
subject varchar(20), -- 科目
class varchar(20) -- 班级
); --表数据:
insert into tab
select '36', '英语' ,'一班' from dual
union all select '44', '英语', '二班' from dual
union all select '44', '数学', '二班' from dual
union all select '33', '语文', '一班' from dual
union all select '39', '语文', '三班' from dual --代码
select subject
,max(decode(class,'一班',counter))"一班"
,max(decode(class,'三班',counter))"三班"
,max(decode(class,'二班',counter))"二班"
from tab group by subject