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