最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從Oracle 表格行列轉(zhuǎn)置說起第1/2頁

 更新時(shí)間:2009年09月21日 18:35:22   作者:  
當(dāng)你面對(duì)如下格式的一個(gè)表格:NO為人員的ID,MONEY是收入,DAY是星期(1代表星期一,7代表周日)。

NO MONEY DAY
1 23 1
1 43 2
1 -45 3
2 42 1
2 -10 2
2 50 3
3 100 8

為了符合閱讀習(xí)慣,最終報(bào)表希望是如下格式:

NO MON TUE THR
1 23 43 -45
2 42 -10 50
3      

------------------------

咱們一步步來實(shí)現(xiàn):

1.運(yùn)用DECODE轉(zhuǎn)換行為列

SQL:

SELECT NO,
    DECODE(DAY,1,MONEY,'') DAY1,
    DECODE(DAY,2,MONEY,'') DAY2,
    DECODE(DAY,3,MONEY,'') DAY3
FROM TEMP

結(jié)果:

NO DAY1 DAY2 DAY3
1 23
1 43
1 -45
2 42
2 -10
2 50
3      

2.按NO字段分組,并更改列名

SQL:

SELECT NO, MAX(DAY1) MON, MAX(DAY2) TUE, MAX(DAY3) THR
 FROM (SELECT NO,
        DECODE(DAY, 1, MONEY,'') DAY1,
        DECODE(DAY, 2, MONEY,'') DAY2,
        DECODE(DAY, 3, MONEY,'') DAY3
     FROM TEMP)
 GROUP BY NO;

結(jié)果:

NO MON TUE THR
1 23 43 -45
2 42 -10 50
3      

------------------------

重難點(diǎn)歸納:

1.DECODE缺省值設(shè)置

DECODE語法如下:decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,缺省值)

如果缺省值由''(兩個(gè)單引號(hào))改為0,即SQL:

SELECT NO, MAX(DAY1) MON, MAX(DAY2) TUE, MAX(DAY3) THR
 FROM (SELECT NO,
        DECODE(DAY, 1, MONEY,0) DAY1,
        DECODE(DAY, 2, MONEY,0) DAY2,
        DECODE(DAY, 3, MONEY,0) DAY3
     FROM TEMP)
 GROUP BY NO;

結(jié)果如下(所有值為負(fù)與空值都被賦為0):

NO MON TUE THR
1 23 43 0
2 42 0 50
3 0 0 0

2.列缺省值設(shè)置(DAY值為8的顯示為'undefined')

SQL:

SELECT NO,MONEY,
    DECODE(DAY,1,'MON',2,'TUE',3,'THR','undefined') DAY
FROM TEMP

結(jié)果:

NO MONEY DAY
1 23 MON
1 43 TUE
1 -45 THR
2 42 MON
2 -10 TUE
2 50 THR
3 100 undefined

3.行列轉(zhuǎn)化在表單內(nèi)數(shù)據(jù)量較大的情況下消耗較大

原因:

1.掃描目標(biāo)數(shù)據(jù)時(shí)間開銷大。

2.GROUP BY時(shí),數(shù)據(jù)冗余帶來的多行合并。

優(yōu)點(diǎn):

表結(jié)構(gòu)穩(wěn)定:DAY增加新值只需增加記錄,無需新增新列!

下一頁 decode()函數(shù)使用技巧

相關(guān)文章

最新評(píng)論

轮台县| 新竹县| 和田市| 察隅县| 娄烦县| 乐陵市| 女性| 获嘉县| 佛教| 鄢陵县| 汾西县| 虹口区| 南靖县| 都昌县| 南丰县| 如东县| 桂阳县| 安康市| 壤塘县| 周至县| 宁远县| 石城县| 溧阳市| 鹤壁市| 富顺县| 凤阳县| 巴林左旗| 深州市| 林西县| 吴旗县| 郸城县| 贵溪市| 日照市| 保定市| 北京市| 库车县| 白银市| 华池县| 聂荣县| 南漳县| 平遥县|