xmlagg函式語法基本如圖,可以用於列轉行,列轉行函式在oracle裡有好幾種方法,wm_concat也可以做
這裡介紹wm_concat是因為xmlagg實現效果和wm_concat是一樣的,只是效能方面不一樣,注意:xmlagg最好排序一下,效能會好點
xmlagg例子:
需要實現乙個table,有一列的效果是:使用者姓名a(賬號a),使用者姓名b(賬號b)…這種格式。這就想到oracle的列轉行函式。可以用類似這種格式(a || 『(』 || b || 『)』),a表示使用者名字段,b表示賬號字段。
select xmlagg(xmlelement(e, bs.user_name || '(' || bs.user_code || ')', ',').extract('//text()'))
.getclobval(),
from t_flow_step fs
left join t_user bs
on fh.handler = bs.user_code
left join t_step_define sd
on fs.step_id = sd.step_id
group by sd.step_name
查詢出來,是用,分隔的資料,實現列轉行顯示
xmlagg常用語法:
select t.item,
xmlagg(xmlelement(e, t.rs_name, ',').extract('//text()'))
.getclobval() 材料名稱
from t_itm_rcv_stuff t groupby t.item;
wm_concat會有版本不相容問題,
oracle列轉行函式還有listagg,也可以用sys_connect_by_path來做,具體根據需求來
oracle聚合函式彙總
今天在做專案,講mysql專案轉換為oracle專案的時候,發現某些sql語句不相容 mysql語句如下 select column1,group concat shouyilv order by crete date as shouyilv from rconfigdata where colum...
oracle應用之sql小寫
本人不喜歡在sql裡面大小寫混合在一起,每次看到別人的sql,總是要轉換為小寫,如以下sql with t as select date 2014 05 06 time1,1 type,100 times from dual union all select date 2014 05 06 2,20...
Oracle應用之開窗函式筆記及應用場景
介紹oracle的開窗函式之前先介紹一下分析函式,因為開窗函式也屬於分析函式 分析函式用於計算基於組的某種聚合值,它和聚合函式的不同之處是 對於每個組返回多行,而聚合函式對於每個組只返回一行。上面是開窗函式的簡單介紹。開窗函式指定了分析函式工作的資料視窗大小,這個資料視窗大小可能會隨著行的變化而變化...