亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統(tǒng) 2304 0

偶然需要了解,學(xué)習(xí)了這篇文章,轉(zhuǎn)載記錄一下

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

1. 創(chuàng)建測試數(shù)據(jù)

[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' 數(shù)學(xué) ',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' 數(shù)學(xué) ',77?from?dual?union?all??
  8. select?N' 李四 ',N' 英語 ',65?from?dual?union?all??
  9. select?N' 李四 ',N' 物理 ',85?from?dual?;??
  10. commit;??

希望看到查詢結(jié)果 :?

[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?,?' 數(shù)學(xué) '?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,?' 數(shù)學(xué) ',?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;??

這樣的問題,要找出他的關(guān)鍵點來。其實就是行轉(zhuǎn)列,這是一位同學(xué)在Itpub上的問題。

Oracle 行轉(zhuǎn)列(pivot、wm_concat、decode)使用總結(jié)

問題的解決:

建表:

create table t_result

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

插入數(shù)據(jù):

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

行轉(zhuǎn)列:

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 行轉(zhuǎn)列(pivot、wm_concat、decode)使用總結(jié)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美久久久久久久一区二区三区 | 九九艹| 亚洲激情综合 | 22222se男人的天堂 | 校园春色男人天堂 | 日本高清不卡在线观看 | 加勒比亚洲精品久久久久久久久久 | 亚洲免费在线看 | 欧美一级成人毛片影院 | 毛片福利视频 | 国产福利视屏 | 国产在线精品一区二区三区 | 四虎www成人影院观看 | 一区二区网站 | 国产一区91 | 成人a毛片免费全部播放 | 在线免费午夜视频 | 在线观看视频一区 | 老子影院午夜伦不卡不四虎卡 | 欧美狠狠入鲁的视频极速 | 色播五月激情五月 | 国产成人一区二区三中文 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠久久丁香 | 亚洲一区二区三区在线免费观看 | 污网站视频在线观看 | 国产精品久久久久久久人热 | 天天干夜夜曰 | 九九精品热线免费观看6 | 欧美日韩毛片 | 精品91自产拍在线观看99re | 奇米777视频二区中文字幕 | 免费在线观看毛片 | 四虎影视免费观看免费观看 | 久久精品国产久精国产80cm | 影音先锋在线亚洲精品推荐 | 国产福利视频深夜福利 | 欧美久久一区二区三区 | 乱人伦视频69 | 中国jizz日本| 久久久久国产精品免费 | 四虎精品 |