欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Oracle 行轉列(pivot、wm_concat、decode)使用

系統 2097 0

偶然需要了解,學習了這篇文章,轉載記錄一下

自:http://blog.csdn.net/jxzkin/article/details/7949629

1. 創建測試數據

[html] ? view plain copy

  1. CREATE?TABLE?CC??
  2. ??(Student?NVARCHAR2(2),Course?NVARCHAR2(2),Score?INT??
  3. ??);??

[html] ? view plain copy

  1. INSERT?into?CC???
  2. select?N' 張三 ',N' 語文 ',78?from?dual?union?all??
  3. select?N' 張三 ',N' 數學 ',87?from?dual?union?all??
  4. select?N' 張三 ',N' 英語 ',82?from?dual?union?all??
  5. select?N' 張三 ',N' 物理 ',90?from?dual?union?all??
  6. select?N' 李四 ',N' 語文 ',65?from?dual?union?all??
  7. select?N' 李四 ',N' 數學 ',77?from?dual?union?all??
  8. select?N' 李四 ',N' 英語 ',65?from?dual?union?all??
  9. select?N' 李四 ',N' 物理 ',85?from?dual?;??
  10. commit;??

希望看到查詢結果 :?

[html] ? view plain copy

  1. 李四 ?77?85?65?65?292??
  2. 張三 ?87?90?82?78?337??
    2.
    使用 wm_concat 方法

[html] ? view plain copy

  1. SELECT?STUDENT,WM_CONCAT(SCORE),SUM(SCORE)?FROM?CC?GROUP?BY?STUDENT;??

3. 使用 Oracle 11g pivot 方法

[html] ? view plain copy

  1. SELECT?KIN.*,??
  2. ??KIN.a+KIN.b+KIN.c+KIN.d?AS?TOTAL??
  3. FROM??
  4. ??(SELECT???????????????????????????????*??
  5. ??FROM?CC?PIVOT?(?MAX(SCORE)?FOR?COURSE?IN?(' 語文 '?AS?A?,?' 數學 '?AS?B,?' 英語 '?AS?C,' 物理 '?AS?D)?)??
  6. ??)?KIN;??

4. 使用 DECODE 方法

[html] ? view plain copy

  1. SELECT??
  2. student,??
  3. MAX(decode(COURSE,?' 語文 ',?SCORE))?A,??
  4. MAX(DECODE(COURSE,?' 數學 ',?SCORE))?B,??
  5. MAX(DECODE(COURSE,?' 英語 ',?SCORE))?C,??
  6. MAX(DECODE(COURSE,?' 物理 ',?SCORE))?D,??
  7. SUM(SCORE)?TOTAL??
  8. FROM??
  9. CC??
  10. GROUP?BY??
  11. student;??

這樣的問題,要找出他的關鍵點來。其實就是行轉列,這是一位同學在Itpub上的問題。

Oracle 行轉列(pivot、wm_concat、decode)使用總結

問題的解決:

建表:

create table t_result

(d varchar2(10),result varchar2(4));

插入數據:

insert into t_result values ('2014-01-01','勝');

insert into t_result values ('2014-01-01','勝');

insert into t_result values ('2014-01-01','負');

insert into t_result values ('2014-01-02','勝');

insert into t_result values ('2014-01-02','負');

insert into t_result values ('2014-01-02','負');

?

寫法如下, 要掃描兩次表

select t1.d,t1.c1 '勝',t2.c2 '負' from

(select count(result) c1,d from t_result where result = '勝' group by d) t1

LEFT outer join

(select count(result) c2,d from t_result where result = '負' group by d) t2

on t1.d = t2.d

行轉列:

SELECT d,SUM(decode(result,'勝',1,0)),SUM(decode(result,'負',1,0))

FROM t_result

GROUP BY d

select d,

sum(case result when '勝' then 1 else 0 end )勝,

sum(case result when '負' then 1 else 0 end )負

from t_result group by d order by d;

Oracle 行轉列(pivot、wm_concat、decode)使用總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 毛片免费在线视频 | 欧美成人在线视频 | 国产男女爽爽爽免费视频 | 国产拳头交一区二区 | 日日久| 又黄又爽免费无遮挡在线观看 | 国产免费久久久久 | 国产一区中文字幕 | 欧美精品3atv一区二区三区 | 高清不卡一区二区 | 欧美日韩免费播放一区二区 | 国产成人综合亚洲动漫在线 | 三级三级三级a三级三级 | 国产精品亚洲综合 | 午夜特级毛片 | 久草资源在线视频 | 日韩经典中文字幕 | 亚洲乱码在线卡一卡二卡新区 | freexxxx性女hd性吃奶 | 欧美成视频无需播放器 | 一级黄色片武则天 | 免费在线看a | 九九精品视频一区在线 | 色视频在线免费观看 | a在线免费观看 | 亚洲国产成人va在线观看网址 | 日本粉嫩一区二区三区视频 | www.黄色大片| 国变精品美女久久久久av爽 | 成人在线免费av | 浮力国产第一页 | 国产精品夜夜春夜夜爽久久 | 日韩视频在线观看免费 | 国产91久久精品一区二区 | 狠狠色丁香婷婷久久 | 精品日本一区二区 | 一区二区三区四区国产 | 女毛片| 欧美一级黄色网 | 秦浩最新电视剧 | 国产一级视频 |