Oracle的列转行问题
生活随笔
收集整理的這篇文章主要介紹了
Oracle的列转行问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Oracle的列轉(zhuǎn)行問題 Oracle中使用語句將行數(shù)據(jù)轉(zhuǎn)換稱不同的列表示,或者將不同的列數(shù)據(jù)寫到同一列的不同行上的行列轉(zhuǎn)換問題是一個非常傳統(tǒng)的話題。 網(wǎng)絡(luò)上流傳了很多將行數(shù)據(jù)轉(zhuǎn)換稱列數(shù)據(jù)的方法和應(yīng)用實(shí)例,一般通過decode或者case函數(shù)與聚合函數(shù)聯(lián)合實(shí)現(xiàn)功能,這里就不再重復(fù)。 日前本人在一個偶然的應(yīng)用中用到了一個需要將列數(shù)據(jù)轉(zhuǎn)換為行數(shù)據(jù)的問題。搜索了很久沒有發(fā)現(xiàn)很合適的方法。網(wǎng)絡(luò)一般推薦使用union all實(shí)現(xiàn)。這樣的一個重要問題在于會造成對數(shù)據(jù)表的重復(fù)訪問,性能是個重要問題。 基于此,作者設(shè)想了另外一種實(shí)現(xiàn)可能性。實(shí)踐證明,這種方法有效提供了查詢性能。 create table f_distribution( f1 varchar2(200), qty1 int, qty2 int, qty3 int ); insert into f_distribution(f1,qty1,qty2,qty3) values('zhanglei',1,2,3); insert into f_distribution(f1,qty1,qty2,qty3) values('lixian',1,2,3); insert into f_distribution(f1,qty1,qty2,qty3) values('zhoubin',1,2,3); insert into f_distribution(f1,qty1,qty2,qty3) values('zhengtong',1,2,3); select * from f_distribution select a.f1,b.fid, decode(b.fid,'數(shù)據(jù)1',a.qty1, '數(shù)據(jù)2',a.qty2, '數(shù)據(jù)3',a.qty3 ) from f_distribution a, ( select '數(shù)據(jù)1' fid from dual union all select '數(shù)據(jù)2' fid from dual union all select '數(shù)據(jù)3' fid from dual? ) b 本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/47522341/archive/2009/02/07/3867353.aspx
轉(zhuǎn)載于:https://blog.51cto.com/77857/172132
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Oracle的列转行问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: foxpro:将表写入excel
- 下一篇: IT夫妻语录