侧边栏壁纸
博主头像
与晚风述往事博主等级

万般皆下品,唯有读书高。

  • 累计撰写 149 篇文章
  • 累计创建 29 个标签
  • 累计收到 19 条评论

目 录CONTENT

文章目录

listagg函数的使用

与晚风述往事
2021-12-19 / 0 评论 / 0 点赞 / 424 阅读 / 575 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-12-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

LISTAGG函数用于在查询时,将多行数据按指定的字符串和指定的顺序去拼接成一行。
注意,除RAW类型的字段会返回RAW类型外,其它都会返回varchar2类型。

语法

LISTAGG(measure_expr [, 'delimiter'])
  WITHIN GROUP (order_by_clause) [OVER query_partition_clause]

说明:

  • measure_expr 字段或表达式,它在查询时会忽略字段(表达式)中的空值。
  • delimiter 作为拼接的字符串,此值是可选项,默认为NULL(空)。
  • order_by_clause 排序子句,用来确定拼接后的顺序。

案例

作为单聚合函数

假设,我这边有这样一张表testaa,表中数据如下图所示:
image.png

现在有个需求要我们将表中的所有姓名用“-”拼接成一行,我们就可以这样写:

select listagg(name,'-')within group(order by 1) from testaa;

image.png
如此,就将全部姓名拼接成一行了。

作为组聚合函数

再假设,我这边有这样一张表testaa,表中数据如下图所示:
image.png
有个需求是要我们按不同性别去将姓名用“-”拼接起来,我们就可以这样写:

select sex,listagg(name,'-')within group(order by id desc) 
from testaa 
group by sex;

image.png

0

评论区