<u id="1k2el"></u>
<u id="1k2el"></u>

      咨詢電話:0551-62903161

      學(xué)術(shù)交流

      首頁>官網(wǎng)首頁 > 教育教學(xué) > 學(xué)術(shù)交流 >
      Oracle 11g 行列互換
      作者:未知??時間:2018-12-15 09:37
      Oracle 11g 提供了 pivot 和 unpivot 函數(shù)做行列互換
       在Oracle 11g中,Oracle 又增加了2個查詢:pivot(行轉(zhuǎn)列) 和unpivot(列轉(zhuǎn)行)
      測試如下:
      create table demo(id int,name varchar(20),nums int);  ---- 創(chuàng)建表
      insert into demo values(1, '蘋果', 1000);
      insert into demo values(2, '蘋果', 2000);
      insert into demo values(3, '蘋果', 4000);
      insert into demo values(4, '橘子', 5000);
      insert into demo values(5, '橘子', 3000);
      insert into demo values(6, '葡萄', 3500);
      insert into demo values(7, '芒果', 4200);
      insert into demo values(8, '芒果', 5500);
      commit;

      --分組查詢

      select name, sum(nums) nums from demo group by name
       行轉(zhuǎn)列查詢
      select * from (select name, nums from demo) pivot (sum(nums) for name in ('蘋果' 蘋果, '橘子', '葡萄', '芒果'));
      pivot(聚合函數(shù) for 列名 in(類型)) ,其中 in(‘’) 中可以指定別名,in中還可以指定子查詢,比如 上面的例子可以改成:
      select * from (select name, nums from demo) pivot (sum(nums) for name in (select distinct name from demo));

      unpivot 行轉(zhuǎn)列

      顧名思義就是將多列轉(zhuǎn)換成1列中去
      案例:現(xiàn)在有一個水果表,記錄了4個季度的銷售數(shù)量,現(xiàn)在要將每種水果的每個季度的銷售情況用多行數(shù)據(jù)展示。
      創(chuàng)建表和數(shù)據(jù)
      create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int);

      insert into Fruit values(1,'蘋果',1000,2000,3300,5000);
      insert into Fruit values(2,'橘子',3000,3000,3200,1500);
      insert into Fruit values(3,'香蕉',2500,3500,2200,2500);
      insert into Fruit values(4,'葡萄',1500,2500,1200,3500);
      select * from Fruit;


      列轉(zhuǎn)行查詢
      select id , name, jidu, xiaoshou from Fruit unpivot (xiaoshou for jidu in (q1, q2, q3, q4);


      XML類型

      上述pivot列轉(zhuǎn)行示例中,你已經(jīng)知道了需要查詢的類型有哪些,用in()的方式包含,假設(shè)如果您不知道都有哪些值,您怎么構(gòu)建查詢呢?

      pivot 操作中的另一個子句 XML 可用于解決此問題。該子句允許您以 XML 格式創(chuàng)建執(zhí)行了 pivot 操作的輸出,在此輸出中,您可以指定一個特殊的子句 ANY 而非文字值

      示例如下:

       

      select * from ( select name, nums as "Purchase Frequency" from demo t) pivot xml ( sum( "Purchase Frequency" ) for name in (any));

      使用任何 XML 分析器中的輸出生成更有用的輸出
        輸出類似:
       <PivotSet><item><column name = "NAME">芒果</column><column name = "購買數(shù)量">9700</column></item><item><column name = "NAME">蘋果</column><column name = "購買數(shù)量">7000</column></item><item><column name = "NAME">葡萄</column><column name = "購買數(shù)量">3500</column></item><item><column name = "NAME">橘子</column><column name = "購買數(shù)量">8000</column></item></PivotSet>

      友情鏈接:北大青鳥科海學(xué)院合肥濱湖職業(yè)技術(shù)學(xué)院合肥公交技校 安徽衛(wèi)生健康職業(yè)學(xué)院
      獲獎信息:

      地鐵:乘地鐵1號線到合工大南區(qū)B出口,向南800米即到。

      聯(lián)系我們:招生老師15056993965(微信手機同號)??????0551-62903161

      地址:合肥市包河區(qū)馬鞍山路富成大廈4樓北大青鳥(合工大東門斜對面)

      日韩黄色毛片在线观看_96精品人妻大胆无码_亚洲一区二区在线波多野_在线视频一区二区三期
      <u id="1k2el"></u>
      <u id="1k2el"></u>

          亚洲一二三区在线观看未删减 | 中文字幕天堂手机版 | 亚州另类欧美综合一区 | 日韩国产精品视频一区二区三区 | 在线播放一区二区三区 | 香港三级韩国三级日本三级 |