新增內容:增加另一種方法
需求
列出雇員表中同屬乙個部門的雇員名稱和部門號
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...