Oracle 11g 新聚集函数listagg实现列转行
来源:互联网 发布:2016年进出口数据 编辑:程序博客网 时间:2024/05/24 06:40
Oracle 11g 新聚集函数listagg实现列转行
with temp as(
select '1' a,'a' b from dual
union all
select '1' a,'b' b from dual
)
select a,listagg(b,',') within group(order by b) from temp group by a
先上语法:
LISTAGG ( column | expression,
delimiter ) WITHIN GROUP (ORDER BY column | expression)这是一个聚集函数。通过一个例子来说明其用法:SELECT department_id, LISTAGG(last_name, '; ') WITHIN GROUP (ORDER BY hire_date, last_name) "Emp_list"FROM employee
group by department_id;10 Eckhardt; Newton; Friedli; James; Michaels; Dovichi
20 peterson; leblanc
30 Jeffrey; Wong
Newton可以看到简单一行代码实现了列转行功能。在这之前需要用decode()穷举各种可能来实现,假如无法穷举需要写一大段函数(详见asktom.oracle.com)。
在这个例子里,last_name根据department_id聚集,同一department_id下所有last_name作为一组出现。
listagg作为分析函数
SELECT department_id "Dept", hire_date "Date", last_name "Name",
LISTAGG(last_name, '; ') WITHIN GROUP (ORDER BY hire_date, last_name)
OVER (PARTITION BY department_id) as "Emp_list"
FROM employee
ORDER BY "Dept", "Date", "Name";
这段SQL查询每个部门里每个人,他的入职日期,所有同部门的同事。按照部门,入职日期,员工姓名排序。
102004/07/07EckhardtEckhardt; Newton; Friedli; James; Michaels; Dovichi
102006/09/24NewtonEckhardt; Newton; Friedli; James; Michaels; Dovichi
102007/05/16FriedliEckhardt; Newton; Friedli; James; Michaels; Dovichi
102007/05/16JamesEckhardt; Newton; Friedli; James; Michaels; Dovichi
102007/05/16MichaelsEckhardt; Newton; Friedli; James; Michaels; Dovichi
102011/07/07DovichiEckhardt; Newton; Friedli; James; Michaels; Dovichi
202008/11/03petersonpeterson; leblanc
202009/03/06leblancpeterson; leblanc
302010/02/27JeffreyJeffrey; Wong
302010/02/27WongJeffrey; Wong
2005/09/14NewtonNewton
- Oracle 11g 新聚集函数listagg实现列转行
- Oracle 11g 新聚集函数listagg实现列转行
- Oracle 11g 新聚集函数listagg实现列转行
- Oracle 11g 列转行listagg
- oracle-listagg()函数实现列转行
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- Oracle 列转行函数 Listagg()
- WM_CONCAT LISTAGG函数,ORACLE列转行聚合的简单实现
- Oracle的列转行函数:listagg()
- Oracle 列转行函数 Listagg()示例
- Android程序:checkbox的使用方法
- hadoop2.6.0版本集群环境搭建
- flex中datagrid列滚动锁定
- redis起步
- 常用的东东!
- Oracle 11g 新聚集函数listagg实现列转行
- Python基础06 循环
- Tab Layout(选项卡布局)
- 关于androidUI线程更新与Handler
- Codeforces Round #296 (Div. 2) - B. Error Correct System(脑洞)
- Android中Services之异步IntentService
- flex DataGrid 多选
- H264--1--编码原理以及I帧B帧P帧
- 欢迎使用CSDN-markdown编辑器