程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle 數據顯示 橫表轉縱表

Oracle 數據顯示 橫表轉縱表

編輯:關於Oracle數據庫
1.建表
代碼如下:

-- Create table
create table test
(
dm1 char(3),
dm2 char(3),
mc1 nvarchar2(20),
val nvarchar2(20)
)

2.填入數據如下:

DM1 DM2 MC1 VAL 101 1 c1 100 101 1 c2 80 101 1 c3 40 101 2 c1 30 101 2 c2 80 102 4 c1 9 102 6 c2 50

轉換後數據顯示如下:

DM1 DM2 c1 c2 c3 101 1 100 80 40 101 2 30 80   102 4 9     102 6   50  

3.轉換語句:
代碼如下:

select dm1,dm2,sum(decode(mc1,'c1',val)) c1,sum(decode(mc1,'c2',val)) c2,sum(decode(mc1,'c3',val)) c3
from test
group by dm1,dm2

注:該語句是在val為數值的情況下的執行方法,如果val不為數值型,或者包含字符串等類型的話,運用sum會報錯,這裡可以采用另外一個方法,將sum改為max即可,語句如下:
代碼如下:

select dm1,dm2,max(decode(mc1,'c1',val)) c1,max(decode(mc1,'c2',val)) c2,max(decode(mc1,'c3',val)) c3
from test
group by dm1,dm2

此外,橫表轉縱表亦可用與decode意義相似的case語句實現,原理同該語句,這裡不再過多描述。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved