国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

從Oracle 表格行列轉置說起第1/2頁

2024-08-29 13:56:19
字體:
來源:轉載
供稿:網友

NOMONEYDAY

1231

1432

1-453

2421

2-102

2503

31008

為了符合閱讀習慣,最終報表希望是如下格式:

NOMONTUETHR

12343-45

242-1050

3

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

咱們一步步來實現:

1.運用DECODE轉換行為列

SQL:

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

結果:

NODAY1DAY2DAY3

123

143

1-45

242

2-10

250

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;

結果:

NOMONTUETHR

12343-45

242-1050

3

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

重難點歸納:

1.DECODE缺省值設置

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

如果缺省值由''(兩個單引號)改為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;

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

NOMONTUETHR

123430

242050

3000

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

SQL:

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

結果:

NOMONEYDAY

123MON

143TUE

1-45THR

242MON

2-10TUE

250THR

3100undefined

3.行列轉化在表單內數據量較大的情況下消耗較大

原因:

1.掃描目標數據時間開銷大。

2.GROUP BY時,數據冗余帶來的多行合并。

優點:

表結構穩定:DAY增加新值只需增加記錄,無需新增新列!

下一頁 decode()函數使用技巧
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 友谊县| 绥芬河市| 灌南县| 和田市| 汾西县| 进贤县| 桂东县| 二连浩特市| 赤壁市| 牡丹江市| 拉萨市| 惠水县| 安福县| 花垣县| 夏津县| 资兴市| 清远市| 锡林郭勒盟| 安庆市| 常山县| 南汇区| 伊春市| 衡东县| 汉沽区| 江阴市| 横峰县| 准格尔旗| 安新县| 九江市| 布拖县| 九寨沟县| 息烽县| 彭泽县| 平陆县| 麦盖提县| 德令哈市| 琼中| 炉霍县| 介休市| 泰宁县| 吉水县|