LISTAGG函数

来源:互联网 发布:东莞厂货aj哪淘宝店好 编辑:程序博客网 时间:2024/06/15 20:40

举个简单的例子

SELECT * from city

我查询的结果是这样的


       nation        city

1 China Guangzhou
2 China Shanghai
3 China Beijing
4 USA New York
5 USA Bostom
6 Japan Tokyo


但假如我们不想要这种形式的结果,而是要那种每个nation后面的city值一一列举出来,

那怎么办


此时我们就可以利用LISTAGG函数的功能来实现我们的效果

            select nation,listagg(city,',') within group (order by nation) as city
            from city
            group by nation

查询结果如下




当然必须注意的是,此函数必须在

oracle 11gR2 才有,R1 没有

具体的有没有这个功能,可以查看自己的oracle版本

select * from v$version;

如果出现的是

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

说明是11gR2 有此功能

如果出现的是

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

说明是11gR1并没有此功能



还有

需要注意的事项如下:
1. 必须得分组,也就是说group  by是必须的。
2. listagg函数的第一个参数是需要进行枚举的字段,也就是ddate;第二个参数是枚举数值之间的分隔符;同时还需要进行排序和分组within group (order by name)

0 0
原创粉丝点击