LISTAGG 窗口函数
对于查询中的每个组,LISTAGG 窗口函数根据 ORDER BY 表达式对该组的行进行排序,然后将值串联成一个字符串。
LISTAGG 是仅计算节点函数。如果查询不引用用户定义的表或 Amazon Redshift 系统表,该函数将返回错误。有关更多信息,请参阅查询目录表。
语法
LISTAGG( [DISTINCT] expression [, 'delimiter' ] )
[ WITHIN GROUP (ORDER BY order_list) ]
OVER ( [PARTITION BY partition_expression] ) Arguments
- DISTINCT
(可选) 用于在串联之前消除指定表达式中重复值的子句。尾部空格将被忽略,因此会将字符串
'a'和'a '视为重复值。LISTAGG 将使用遇到的第一个值。有关更多信息,请参阅尾部空格的意义。- aggregate_expression
提供要聚合的值的任何有效表达式(如列名称)。忽略 NULL 值和空字符串。
- 分隔符
(可选) 将用于分隔串联的值的字符串常数。默认值为 NULL。
- WITHIN GROUP (ORDER BY order_list)
(可选) 用于指定聚合值的排序顺序的子句。仅在 ORDER BY 提供唯一排序时是确定性的。默认为聚合所有行并返回一个值。
- OVER
一个指定窗口分区的子句。OVER 子句不能包含窗口排序或窗口框架规范。
- PARTITION BY partition_expression
(可选) 设置 OVER 子句中每个组的记录范围。
返回值
VARCHAR(MAX)。如果结果集大于最大 VARCHAR 大小(64K – 1 或 65535),则 LISTAGG 返回以下错误:
Invalid operation: Result size exceeds LISTAGG limit
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




