Create table test (name char(10),km char(10),cj int)
insert test values('张三','语文',80)
insert test values('张三','数学',86)
insert test values('张三','英语',75)
insert test values('李四','语文',78)
insert test values('李四','数学',85)
insert test values('李四','英语',78)
--列转行:
select name,
sum(decode(km,'语文',cj,0)) 语文,
sum(decode(km,'数学',cj,0)) 数学,
sum(decode(km,'英语',cj,0)) 英语
from test
group by name
----------------------------------------------------
-- 姓名 语文 数学 英语
-- 张三 80 86 75
-- 李四 78 85 78
--行转列:
select 姓名, decode(rn, 1, 语文, 2, 数学, 3,英语)
from test , (select level rn from dual connect by 1=1 and level <=3)