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

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

系統(tǒng) 2002 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)鍵點(diǎn)來。其實(shí)就是行轉(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','負(fù)');

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

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

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

?

寫法如下, 要掃描兩次表

select t1.d,t1.c1 '勝',t2.c2 '負(fù)' 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 = '負(fù)' group by d) t2

on t1.d = t2.d

行轉(zhuǎn)列:

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

FROM t_result

GROUP BY d

select d,

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

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

from t_result group by d order by d;

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美成人h版影片在线观看 欧美成人h精品网站 | 日韩视频在线观看一区二区 | 久久精品国产第一区二区 | 亚洲精美视频 | 91福利一区二区在线观看 | 亚洲视频在线观看免费视频 | 亚洲综合中文网 | 九九网站 | 成人爱爱爱欧美日本视频 | 国产网红自拍 | 国产粉嫩白浆在线观看 | 欧美99视频 | 91精品国产免费网站 | 亚洲精品一二三四区 | 在线黄色免费 | 国产成人亚洲精品大帝 | 视频黄色在线 | 日韩精品亚洲人成在线播放 | 男女一级毛片免费视频看 | 伊色综合久久之综合久久 | 看毛片免费 | 老司机午夜剧场 | 三级aaa黄特色 | 最好看的毛片 | a4yy私人毛片 | 中文国产欧美在线观看 | 亚洲综合站 | 俺去鲁婷婷六月色综合 | 亚洲精品久久久久综合网 | 成年女人免费毛片视频永久 | 国产在线精品一区二区三区 | 欧美一区三区 | 91免费国产在线观看尤物 | 成年女人免费视频播放77777 | 国产精品香蕉成人网在线观看 | 色久影院 | 在线观看日韩精品 | 91在线视频在线观看 | 奇米影视88888 | 婷婷中文| 成人短视频视频在线观看网站 |