oracle的列轉行

2021-08-25 08:40:45 字數 1820 閱讀 4704

首先建立測試環境

create table test1(

user_account varchar2(100),

signup_date date,

user_email varchar2(100),

friend1_email varchar2(100),

friend2_email varchar2(100),

friend3_email varchar2(100)

);insert into test1

values

('rjbryla',

to_date('2009-08-21', 'yyyy-mm-dd'),

'[email protected]',

'[email protected]',

'[email protected]',

'[email protected]');

insert into test1

values

('johndoe',

to_date('2009-08-22', 'yyyy-mm-dd'),

'[email protected]',

null,

'[email protected]',

null);

--查詢表中的內容

該語句的作用就是將列轉成行,src_col_name.friend_email是臨時變數,unpivot(聚合函式 for 列名 in(型別)) 是基本語法  ,其中 in(『』) 中可以指定別名,in中還可以指定子查詢;該語句查詢出來的結果如下圖所示:

oracle11g之前的sql語句為:

select user_account,signup_date,'user_email' as src_col_name,user_email as friend_email from test1

where user_email is not null

union

select user_account,signup_date,'friend1_email' as src_col_name,user_email as friend_email from test1

where friend1_email is not null

union

select user_account,signup_date,'friend2_email' as src_col_name,user_email as friend_email from test1

where friend2_email is not null

union

select user_account,signup_date,'friend3_email' as src_col_name,user_email as friend_email from test1

where friend3_email is not null;

oracle列轉行操作

這裡有兩張表,一張是錯誤類別表 ac dict option 另外一張是錯誤資訊表 mr meterdata 分別需要統計基礎資訊表中 性質變更 正常 霧珠 三種狀態的裝置數量,在group by 之後使用pivot 進行行列的變換.select from select from select me...

oracle列轉行的問題

今天群裡市討論乙個列轉行的問題,開始沒有一點頭緒的,後來有位大哥說到是列轉行的問題,好像以前看到過就沒沒有仔細去看,又查了下je裡面的貼子,找到了解決的辦法如下 現有兩張表,分別為 a table,b table 分別儲存資料如下 a table id name 1 zhang 2 li 3 wan...

oracle的列轉行問題

oracle 的列轉行問題 oracle 中使用語句將行資料轉換稱不同的列表示,或者將不同的列資料寫到同一列的不同行上的行列轉換問題是乙個非常傳統的話題。網路上流傳了很多將行資料轉換稱列資料的方法和應用例項,一般通過 decode 或者case 函式與聚合函式聯合實現功能,這裡就不再重複。日前本人在...