oracle橫向縱向求和代碼實(shí)例
有一張工資表SALARY如下, (NO 員工編號(hào) ,MONEY 工資)
NO NAME ITEM MONEY
001 張三 工資 80
001 張三 補(bǔ)貼 86
001 張三 獎(jiǎng)金 75
002 李四 工資 78
002 李四 補(bǔ)貼 85
002 李四 獎(jiǎng)金 78
求每個(gè)人的總工資以及所有人的總工資,結(jié)果如下表:
結(jié)果如下:
姓名 工資 補(bǔ)貼 獎(jiǎng)金 總工資
李四 780 850 780 2410
張三 800 860 750 2410
總計(jì) 1580 1710 1530 4820
SQL語(yǔ)句:
SELECT DECODE(GROUPING(NAME), 1, '總計(jì)', NAME) 姓名, SUM(DECODE(ITEM, '工資', MONEY, 0)) 工資, SUM(DECODE(ITEM, '補(bǔ)貼', MONEY, 0)) 補(bǔ)貼, SUM(DECODE(ITEM, '獎(jiǎng)金', MONEY, 0)) 獎(jiǎng)金, SUM(MONEY) 總工資 FROM SALARY GROUP BY ROLLUP(NAME);
其中:GROUPING函數(shù)接受一列,列值為空返回1,非空返回0,只能在使用ROLLUP或CUBE的查詢中使用;
DECODE(ITEM, '工資', MONEY, 0) 是指ITME的值與‘工資'比較,如果相等返回MONEY,不等返回0
下面再看一個(gè)實(shí)例
有一張表test 如下, (NO 學(xué)生編號(hào) ,cj 成績(jī))
NO name KM CJ
001 張三 語(yǔ)文 80
001 張三 數(shù)學(xué) 86
001 張三 英語(yǔ) 75
002 李四 語(yǔ)文 78
002 李四 數(shù)學(xué) 85
002 李四 英語(yǔ) 78
寫(xiě)了以下語(yǔ)句來(lái)算每項(xiàng)個(gè)科目的總分,
select decode(grouping(name),1,'總分',name) 姓名, sum(decode(km, '數(shù)學(xué)',cj,0)) 數(shù)學(xué), sum(decode(km, '英語(yǔ)',cj,0)) 英語(yǔ), sum(decode(km, '語(yǔ)文',cj,0)) 語(yǔ)文, sum(cj) 總成績(jī) from test group by rollup(name)
結(jié)果如下:
姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文 總成績(jī) 李四 85 78 78 241 張三 86 75 80 241 總分 171 153 158 482
總結(jié)
以上就是本文關(guān)于oracle橫向縱向求和代碼實(shí)例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以參閱:ORACLE SQL語(yǔ)句優(yōu)化技術(shù)要點(diǎn)解析 、oracle數(shù)據(jù)庫(kù)導(dǎo)入TXT文件方法介紹 、ORACLE多條件統(tǒng)計(jì)查詢的簡(jiǎn)單方法 等。有什么問(wèn)題可以隨時(shí)留言,歡迎大家交流討論。
相關(guān)文章
常見(jiàn)數(shù)據(jù)庫(kù)系統(tǒng)比較 Oracle數(shù)據(jù)庫(kù)
常見(jiàn)數(shù)據(jù)庫(kù)系統(tǒng)比較 Oracle數(shù)據(jù)庫(kù)...2007-03-03刪除EM,強(qiáng)制結(jié)束EM進(jìn)程后,啟動(dòng)數(shù)據(jù)庫(kù)ORA-00119,ORA-00132報(bào)錯(cuò)的解決方法
通過(guò)emca -deconfig dbcontrol db -repos drop命令刪除EM資料庫(kù)時(shí),很長(zhǎng)時(shí)間沒(méi)有刪除完成,期間數(shù)據(jù)庫(kù)連接數(shù)暴漲,達(dá)到數(shù)據(jù)庫(kù)最大連接數(shù),結(jié)果前臺(tái)及后臺(tái)均連接不上數(shù)據(jù)庫(kù)。強(qiáng)制殺死EM及應(yīng)用相關(guān)進(jìn)程,關(guān)閉數(shù)據(jù)庫(kù)后,重啟數(shù)據(jù)庫(kù)時(shí)報(bào):ORA-00119,ORA-00132錯(cuò)誤2015-12-12詳解azure 云上準(zhǔn)備oracle11g的vnc安裝環(huán)境
本篇文章主要介紹了詳解azure 云上準(zhǔn)備oracle11g的vnc安裝環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03oracle中if/else的三種實(shí)現(xiàn)方式詳解
本文給大家介紹了oracle中if/else的三種實(shí)現(xiàn)方式及注意事項(xiàng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-10-10Oracle 10g 服務(wù)器端安裝預(yù)備步驟(詳細(xì)圖文教程)
這篇文章主要介紹了Oracle 10g 服務(wù)器端安裝預(yù)備步驟(詳細(xì)圖文教程),需要的朋友可以參考下2017-03-03Oracle創(chuàng)建設(shè)置查詢權(quán)限用戶的方法
這篇文章主要給大家介紹了關(guān)于Oracle創(chuàng)建設(shè)置查詢權(quán)限用戶的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Oracle具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Oracle查詢最近幾天每小時(shí)歸檔日志產(chǎn)生數(shù)量的腳本寫(xiě)法
這篇文章主要介紹了Oracle查詢最近幾天每小時(shí)歸檔日志產(chǎn)生數(shù)量的腳本寫(xiě)法,需要的朋友可以參考下2017-07-07PLSQL連接本地oracle或遠(yuǎn)程oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)隨意切換功能
這篇文章主要介紹了PLSQL連接本地oracle或遠(yuǎn)程oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)隨意切換功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09