oracle 函式 實現行轉列

2021-07-25 02:54:14 字數 1895 閱讀 7939

新增內容:增加另一種方法

需求

列出雇員表中同屬乙個部門的雇員名稱和部門號

select t.deptno 部門號, t.name 姓名 from employee t;
結果

部門號 姓名

10 clark

10 king

10 miller

20 adams

20 ford

20 jones

20 scott

20 smith

30 allen

30 blake

30 james

30 martin

30 turner

30 ward

借助oracle提供的wmsys.wm_concat()函式,可以方便的實現歸併同一組的資料,看一下用法

方法一

select t.deptno 部門號, wmsys.wm_concat(t.name) 姓名 from employee group

by t.deptno;

實現結果

部門號 姓名

10 clark, king, miller

20 adams, ford, jones, scott, smith

30 allen, blake, james, martin, turner, ward

方法二

listagg函式由11gr2引入,使得字串聚合操作更加容易。並且允許我們制定排序規則。

使用方法如下

select org_id,listagg(org_name,',') within group (order

by org_name) as

"機構名稱"

from(

select

'000000' org_id,'小青菜' org_name,1 org_level from dual union

allselect

'000000','小白',3

from dual union

allselect

'000000','鼠',2

from dual )

group

by org_id;

結果

org_id  機構名稱

000000 小白,小青菜,鼠

注意看一下,中間有乙個order by 排序,現在改變一下排序字段

select org_id,listagg(org_name,',') within group (order

by org_level)

from(

select

'000000' org_id,'小青菜' org_name,1 org_level from dual union

allselect

'000000','小白',3

from dual union

allselect

'000000','鼠',2

from dual )

group

by org_id;

結果

org_id  機構名稱

000000 小青菜,鼠,小白

/201501/

369045.html

SQL實現行轉列

需求 用sql實現行轉列。如下圖所示 行顯示的資料轉換成列顯示 實現行轉列的sql指令碼如下 select date format last day date format now y m d y m d as 業務日期,max case index code when ind20101001 th...

Mysql實現行轉列

create table loc loc varchar 50 xiaoqu varchar 50 addr varchar 50 company varchar 50 插入資料 區域 小區名稱 房屋位址 中介公司寶山 慶安三村 綏化路52弄a寶山 月浦十村 月浦十村67號b寶山 盛橋三村 盛橋三村...

pandas實現行轉列

hive進行大資料分析資料經常用到行轉列,pandas也可以的。不解釋直接上 coding utf 8 import pandas as pd c df pd.dataframe c print df df left df key df values 0 df values str.split ex...