今天群裡市討論乙個列轉行的問題,開始沒有一點頭緒的,後來有位大哥說到是列轉行的問題,好像以前看到過就沒沒有仔細去看,又查了下je裡面的貼子,找到了解決的辦法如下:
現有兩張表,分別為 a_table,b_table
分別儲存資料如下:
a_table
id name
1 zhang
2 li
3 wang
b_table
id type value
1 a 1
1 b 2
2 c 2
3 b 1
3 d 3
現在問題是 如何能實現如下顯示
id name a b c d
1 zhang 1 2
2 li 2
3 wang 1 3
如:decode(ex1,ex2,ex3,ex4); [這裡的ex1 ,ex3代表的是列,ex2代表的是列的值,ex4代表的自定義值]
表示:將ex1列裡的值和ex2列的值進行比較,如果相同,則反回對應ex1某列的行的ex3列的值,不同則返回ex4 ,如果資料固定,ex4可以省略,if....exle語句 如果ex1的值=ex2則返回ex3,否則返回ex4
select id ,name,max(decode(b_table.type,'a',b_table.value)) as a,
max(decode(b_table.type,'b',b_table.value)) as b,
max(decode(b_table.type,'c',b_table.value)) as c,
max(decode(b_table.type,'d',b_table.value)) as d
from a_table,b_table
where a_table.id = b_table.id
group by a_table.id,a_table.name;
沒有測試,應該不會錯。
參考引用的部落格: 謝謝!
oracle的列轉行問題
oracle 的列轉行問題 oracle 中使用語句將行資料轉換稱不同的列表示,或者將不同的列資料寫到同一列的不同行上的行列轉換問題是乙個非常傳統的話題。網路上流傳了很多將行資料轉換稱列資料的方法和應用例項,一般通過 decode 或者case 函式與聚合函式聯合實現功能,這裡就不再重複。日前本人在...
oracle的列轉行
首先建立測試環境 create table test1 user account varchar2 100 signup date date,user email varchar2 100 friend1 email varchar2 100 friend2 email varchar2 100 f...
oracle列轉行操作
這裡有兩張表,一張是錯誤類別表 ac dict option 另外一張是錯誤資訊表 mr meterdata 分別需要統計基礎資訊表中 性質變更 正常 霧珠 三種狀態的裝置數量,在group by 之後使用pivot 進行行列的變換.select from select from select me...