(转)Oracle中实现行列转换的方法
(轉(zhuǎn)自)http://blog.csdn.net/Torrice/archive/2006/01/25/587986.aspx
我們在寫SQL語句的時候經(jīng)常需要用到行與列的轉(zhuǎn)換問題,對于一個新手來說可能比較困難,其實你只要能夠熟練運用Decode和Sum函數(shù),這個問題就迎刃而解.
?
Create ? table ? test ? (name ? char(10),km ? char(10),cj ? Number)
insert ? into ? test ? values('張三','語文',80)
insert ? into ? test ? values('張三','數(shù)學',86)
insert ? into ? test ? values('張三','英語',75)
insert ? into ? test ? values('李四','語文',78)
insert ? into ? test ? values('李四','數(shù)學',85)
insert ? into ? test ? values('李四','英語',78)
commit;
怎樣實現(xiàn)成這樣:
name ? ? 語文 ? ? 數(shù)學 ? ? 英語
李四 ? ? 78 ? ? ? ? 85 ? ? ? ? 83
張三 ? ? 80 ? ? ? ? 86 ? ? ? ? 75
?
16:03:50 ? SQL> ? select ? * ? from ? test;
NAME ? ? ? ? ? ? ? KM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CJ
---------- ? ---------- ? ----------
張三 ? ? ? ? ? ? ? 語文 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 80
張三 ? ? ? ? ? ? ? 數(shù)學 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 86
張三 ? ? ? ? ? ? ? 英語 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 75
李四 ? ? ? ? ? ? ? 語文 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 78
李四 ? ? ? ? ? ? ? 數(shù)學 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 85
李四 ? ? ? ? ? ? ? 英語 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 78
已選擇6行。
已用時間: ? ? 00: ? 00: ? 00.47
16:03:55 ? SQL> ? select ? name,sum(decode(trim(km),'語文',cj,0)) ? 語文,
16:03:58 ? ? ? 2 ? ? sum(decode(trim(km),'數(shù)學',cj,0)) ? 數(shù)學,
16:03:58 ? ? ? 3 ? ? sum(decode(trim(km),'英語',cj,0)) ? 英語
16:03:59 ? ? ? 4 ? ? from ? test ? group ? by ? name;
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? 語文 ? ? ? ? ? ? ? 數(shù)學 ? ? ? ? ? ? ? 英語
---------- ? ---------- ? ---------- ? ----------
李四 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 78 ? ? ? ? ? ? ? ? ? 85 ? ? ? ? ? ? ? ? ? 78
張三 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 80 ? ? ? ? ? ? ? ? ? 86 ? ? ? ? ? ? ? ? ? 75
已用時間: ? ? 00: ? 00: ? 00.15
16:03:59 ? SQL>
?
轉(zhuǎn)載于:https://www.cnblogs.com/spymaster/archive/2007/09/30/912070.html
總結(jié)
以上是生活随笔為你收集整理的(转)Oracle中实现行列转换的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天发布了一个新的网站矩阵www.wim
- 下一篇: 最伟大最不可思议最令人感动的父亲