文章詳情頁
Oracle實(shí)現(xiàn)豎表轉(zhuǎn)橫表的幾種常用方法小結(jié)
瀏覽:128日期:2023-05-30 16:13:51
目錄
- 第一種:使用decode實(shí)現(xiàn)
- 第二種:使用case when實(shí)現(xiàn)
有能耗表,記錄各個(gè)城市水、電、熱的能耗情況,表結(jié)構(gòu)如下:
插入測試數(shù)據(jù),如下:
上面的表格是一張豎表,而我們想得到的是橫表,即行轉(zhuǎn)列,獲得如下結(jié)果
實(shí)現(xiàn)豎表轉(zhuǎn)橫表的查詢,即行轉(zhuǎn)列,通常有兩種常用方法。
第一種:使用decode實(shí)現(xiàn)
SELECT E_CODE, E_TIME, SUM( DECODE(E_TYPE, 0, E_VALUE) ) AS WATER_ENERGY,--水耗 SUM( DECODE(E_TYPE, 1, E_VALUE) ) AS ELE_ENERGY,--電耗 SUM( DECODE(E_TYPE, 2, E_VALUE) ) AS HEAT_ENERGY--熱耗 FROM THTF_ENERGY_TEST GROUP BY E_CODE,E_TIME
輸出如下:
第二種:使用case when實(shí)現(xiàn)
簡單case when函數(shù):
SELECT E_CODE, E_TIME, SUM( CASE E_TYPE WHEN 0 THEN E_VALUE ELSE 0 END ) AS WATER_ENERGY,--水耗 SUM( CASE E_TYPE WHEN 1 THEN E_VALUE ELSE 0 END ) AS ELE_ENERGY,--電耗 SUM( CASE E_TYPE WHEN 2 THEN E_VALUE ELSE 0 END ) AS HEAT_ENERGGY--熱耗 FROM THTF_ENERGY_TEST GROUP BY E_CODE,E_TIME
輸出結(jié)果同上:
CASE WHEN函數(shù)功能很強(qiáng)大、實(shí)用,使用起來也簡單易懂。在此篇文章詳細(xì)介紹:CASE WHEN 用法詳解
到此這篇關(guān)于Oracle實(shí)現(xiàn)豎表轉(zhuǎn)橫表的幾種常用方法小結(jié)的文章就介紹到這了,更多相關(guān)Oracle 豎表轉(zhuǎn)橫表內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
標(biāo)簽:
Oracle
排行榜
