主頁(yè) > 知識(shí)庫(kù) > 從Oracle 表格行列轉(zhuǎn)置說(shuō)起第1/2頁(yè)

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

熱門標(biāo)簽:北京外呼系統(tǒng)公司排名 貴陽(yáng)智能電銷機(jī)器人官網(wǎng) 沈陽(yáng)400電話是如何辦理 北京營(yíng)銷外呼系統(tǒng)廠家 外呼系統(tǒng)口號(hào) 外呼系統(tǒng)鄭州 溫州人工外呼系統(tǒng) 地圖標(biāo)注付款了怎么找不到了 百度地圖標(biāo)注員是干什么

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      

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

咱們一步步來(lái)實(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語(yǔ)法如下: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í)間開(kāi)銷大。

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

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

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

下一頁(yè) decode()函數(shù)使用技巧
12下一頁(yè)閱讀全文
您可能感興趣的文章:
  • Oracle實(shí)現(xiàn)行列轉(zhuǎn)換的方法分析
  • Oracle的數(shù)據(jù)表中行轉(zhuǎn)列與列轉(zhuǎn)行的操作實(shí)例講解
  • Oracle 數(shù)據(jù)庫(kù)針對(duì)表主鍵列并發(fā)導(dǎo)致行級(jí)鎖簡(jiǎn)單演示
  • oracle wm_concat 列轉(zhuǎn)行 逗號(hào)分隔
  • Oracle逗號(hào)分隔列轉(zhuǎn)行實(shí)現(xiàn)方法
  • Oracle CBO幾種基本的查詢轉(zhuǎn)換詳解
  • oracle中to_date詳細(xì)用法示例(oracle日期格式轉(zhuǎn)換)
  • 通過(guò)創(chuàng)建SQLServer 2005到 Oracle10g 的鏈接服務(wù)器實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)轉(zhuǎn)換方案
  • MySQL轉(zhuǎn)換Oracle的需要注意的七個(gè)事項(xiàng)
  • 將mysql轉(zhuǎn)換到oracle必須了解的50件事
  • ORACLE常用數(shù)值函數(shù)、轉(zhuǎn)換函數(shù)、字符串函數(shù)
  • Oracle實(shí)現(xiàn)行轉(zhuǎn)換成列的方法

標(biāo)簽:包頭 衢州 衡水 淮北 潮州 定西 通遼 溫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《從Oracle 表格行列轉(zhuǎn)置說(shuō)起第1/2頁(yè)》,本文關(guān)鍵詞  從,Oracle,表格,行列,轉(zhuǎn)置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《從Oracle 表格行列轉(zhuǎn)置說(shuō)起第1/2頁(yè)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于從Oracle 表格行列轉(zhuǎn)置說(shuō)起第1/2頁(yè)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章