Oracle行列互換總結

2021-05-21 13:51:07 字數 1013 閱讀 6846

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 要求...