本文主要是介绍ORACLE 列转行和行转列的SQL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
网络上关于 行转列和列转行的文章不少,但要么太复杂,要么太凌乱,此处用一个小例子说明如何通过简单SQL实现行列转换。
表test
NAME | KM | CJ |
张三 | 语文 | 80 |
张三 | 数学 | 86 |
张三 | 英语 | 75 |
李四 | 语文 | 78 |
李四 | 数学 | 85 |
李四 | 英语 | 79 |
表test2
NAME | 语文 | 数学 | 英语 |
张三 | 80 | 86 | 75 |
李四 | 78 | 85 | 79 |
行转列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
这篇关于ORACLE 列转行和行转列的SQL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!