Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 11g 新聚集函数listagg实现列转行

Oracle 11g 新聚集函数listagg实现列转行先上语法:
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函数之Replace()  http://www.linuxidc.com//Linux/2013-01/77406.htmOracle函数大全 http://www.linuxidc.com//Linux/2012-12/75875.htm15位身份证升18位身份证的Oracle函数 http://www.linuxidc.com//Linux/2012-11/73747.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12ORA-00904/ORA-00942和Oracle 大小写区分Linux开放1521端口允许网络连接Oracle Listener相关资讯      Oracle 11g  Oracle 11g listagg  Oracle列转行函数 
  • Oracle 11g导入到10g引起的错误  (11/16/2015 10:55:27)
  • Oracle 11g 导库导不出空表问题  (08/19/2015 19:55:58)
  • Oracle 11g统计信息收集--多列统计  (07/24/2015 10:32:39)
  • Oracle 11gClone安装方法  (08/24/2015 20:25:41)
  • Oracle 11g中和SQL TUNING相关的新  (08/12/2015 11:22:52)
  • Oracle 11g数据泵详解  (07/08/2015 08:29:51)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图