久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Oracle實現豎表轉橫表的幾種常用方法小結

瀏覽:144日期:2023-05-30 16:13:51
目錄
  • 第一種:使用decode實現
  • 第二種:使用case when實現

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

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

插入測試數據,如下:

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

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

編號時間水耗電耗熱耗SH2018-08-29 01:00:0022.9518.455633.254GZ2018-08-29 01:00:0048.55421.11225.625BJ2018-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_ENERGYSH2018-08-29 00:00:0022.9518.445633.2540GZ2018-08-29 00:00:0048.554021.112025.6250BJ2018-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_ENERGYSH2018-08-29 00:00:0022.9518.445633.2540GZ2018-08-29 00:00:0048.554021.112025.6250BJ2018-08-29 00:00:0020.0536.3545.2230

CASE WHEN函數功能很強大、實用,使用起來也簡單易懂。在此篇文章詳細介紹:CASE WHEN 用法詳解

到此這篇關于Oracle實現豎表轉橫表的幾種常用方法小結的文章就介紹到這了,更多相關Oracle 豎表轉橫表內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Oracle
主站蜘蛛池模板: 德清县| 呼伦贝尔市| 荔浦县| 镇康县| 修武县| 田林县| 芷江| 塘沽区| 双鸭山市| 全南县| 长兴县| 肥乡县| 镇宁| 卓尼县| 库尔勒市| 浦县| 天津市| 彭山县| 农安县| 彝良县| 万安县| 张北县| 晋宁县| 抚顺市| 冕宁县| 山西省| 蓝山县| 麟游县| 仪征市| 渝中区| 河津市| 南召县| 泸水县| 邯郸县| 疏勒县| 宜川县| 文昌市| 蒙城县| 寿光市| 永康市| 丹东市|