溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle怎么實現豎表轉橫表

發布時間:2023-05-05 15:17:12 來源:億速云 閱讀:233 作者:iii 欄目:開發技術

這篇文章主要介紹“Oracle怎么實現豎表轉橫表”,在日常操作中,相信很多人在Oracle怎么實現豎表轉橫表問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Oracle怎么實現豎表轉橫表”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

有能耗表,記錄各個城市水、電、熱的能耗情況,表結構如下:

名稱類型備注
E_CODEVARCHAR2(10)城市的CODE
E_VALUENUMBER能耗值,包括水耗、電耗、熱耗
E_TIMEVARCHAR2(20)時間
E_TYPENUMBER能耗類型,0:水耗,1:電耗,2:熱耗

插入測試數據,如下:

E_CODEE_VALUEE_TIMEE_TYPE
BJ20.052018-08-29 01:00:000
BJ36.352018-08-29 01:00:001
BJ45.2232018-08-29 01:00:002
SH22.952018-08-29 01:00:000
SH18.45562018-08-29 01:00:001
SH33.2542018-08-29 01:00:002
GZ48.5542018-08-29 01:00:000
GZ21.1122018-08-29 01:00:001
GZ25.6252018-08-29 01:00:002

上面的表格是一張豎表,而我們想得到的是橫表,即行轉列,獲得如下結果

編號時間水耗電耗熱耗
SH2018-08-29 01:00:0022.9518.455633.254
GZ2018-08-29 01:00:0048.55421.11225.625
BJ2018-08-29 01:00:0020.0536.3545.223

實現豎表轉橫表的查詢,即行轉列,通常有兩種常用方法。

第一種:使用decode實現

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

輸出如下:

E_CODEE_TIMEWATER_ENERGYELE_ENERGYHEAT_ENERGY
SH2018-08-29 00:00:0022.9518.445633.2540
GZ2018-08-29 00:00:0048.554021.112025.6250
BJ2018-08-29 00:00:0020.0536.3545.2230

第二種:使用case when實現

簡單case when函數:

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

輸出結果同上:

E_CODEE_TIMEWATER_ENERGYELE_ENERGYHEAT_ENERGY
SH2018-08-29 00:00:0022.9518.445633.2540
GZ2018-08-29 00:00:0048.554021.112025.6250
BJ2018-08-29 00:00:0020.0536.3545.2230

到此,關于“Oracle怎么實現豎表轉橫表”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女