行转列/列转行
行转列:
select t.*, t.rowid from TEST1 t
ID C1 C2 C3
1 小红 数学 10
2 小红 语文 20
3 小栏 数学 15
4 小栏 语文 25
--test1
oracle : SELECT C1,to_char(WM_CONCAT(C2)) c2 FROM TEST1 group by c1
mysql: SELECT C1,GROUP_CONCAT(C2) c2 FROM TEST1 group by c1
--结果:
C1 C2
小红 数学,语文
小栏 数学,语文
--test2
select c1, max(math) as math, max(yuwen) as yuwen
from (SELECT c1,
case
when c2 = '数学' then
c3
end as math,
case
when c2 = '语文' then
c3
end as yuwen
from test1)
group by c1
--结果:
C1 数学 语文
小红 10 20
小栏 15 25
--test3
select *
from (select c2, c3 from test1) pivot(sum(c3) for c2 in('数学', '语文'))
--结果:
数学 语文
25 45
--test4
select *
from (select c1, c2,c3 from test1) pivot(max(c3) for c2 in('数学', '语文'))
--结果:
C1 数学 语文
小红 10 20
小栏 15 25