行转列sql ------test->test2
SELECT NAME,
SUM(decode(t.km, '语文', t.cj, 0)) 语文,
SUM(decode(t.km, '数学', t.cj, 0)) 数学,
SUM(decode(t.km, '英语', t.cj, 0)) 英语
FROM test t
GROUP BY t.name
列转行sql ------test2->test
select t.name,'语文' AS km,t.语文 AS cj from test2 t
UNION ALL
select t.name,'数学' AS km,t.数学 AS cj from test2 t
UNION ALL
select t.name,'英语' AS km,t.英语 AS cj from test2 t
ORDER BY name
原文:http://moonstar.blog.iyunv.com/3288858/810188