oracle行列互換總結
1. 多行換成一行
col1 col2 col1 col2
a 1
a 2 轉換後 a 1,2,3
a 3
a. sys_connect_by_path 函式
select name, ltrim(max(sys_connect_by_path(userid, ',')), ',') userid
from(select name, userid,row_number() over(partition by name order by userid) rn from test) start with rn = 1 connect by rn - 1 = prior rn and name = prior name group by name order by name;
b.wmsys.wm_concat函式
select name,wmsys.wm_concat(userid) from xj_class group by name;
2. 一行換多行
col col
1,2,3 轉換後 1 2
3 select substr(subject_id,instr(subject_id,',',1,rownum)+1,
instr(subject_id,',',1,rownum+1)-instr(subject_id,',',1,rownum)-1) subject_id,rownum
from (select ','||subject_id||',' as subject_id
from tea_class_subject where teacher_id=61 and class_id=16641)
connect by rownum
注:使用行列互換函式貌似很佔記憶體。
oracle 常用寫法 行列互換
oracle 11g 行列互換 pivot 和 unpivot 說明 在oracle 11g中,oracle 又增加了2個查詢 pivot 行轉列 和unpivot 列轉行 參考 google 一下,網上有一篇比較詳細的文件 pivot 列轉行 測試資料 id,型別名稱,銷售數量 案例 根據水果的型...
Oracle筆記 之 行列互換
pivot函式 行轉列函式 格式pivot 任一聚合函式 for 需專列的值所在列名 in 需轉為列名的值 pivot函式位於from集合後 示例示例1 select from emp pivot sum nvl sal,0 for deptno in 10 as accounting,20as r...
SQL(行列互換)
有乙個sql題在面試中出現的概率極高,最近有學生出去面試仍然會遇到這樣的題目,在這裡跟大家分享一下。題目 資料庫中有一張如下所示的表,表名為sales。年 季度銷售量 1991111 1991212 1991313 1991414 1992121 1992222 1992323 1992424 要求...