问题标签 [listagg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
10286 浏览

oracle - 带有 ORDER BY NULL 的 LISTAGG 实际上用作订单标准的是什么?

如果我做

输出是:

当使用ORDER BY非确定性排序(或常量)时,查询似乎已经完成了字母数字排序,并且在使用(确定性)NULL时保持了输入顺序。ORDER BY ROWNUM

LISTAGG文件指出:

order_by_clause 确定返回连接值的顺序。仅当 ORDER BY 列列表实现唯一排序时,该函数才具有确定性。

在查看分析函数时,它指出:

每当 order_by_clause 为多行生成相同的值时,该函数的行为如下: [...] 对于所有其他分析函数,结果取决于窗口规范。如果您使用 RANGE 关键字指定逻辑窗口,则该函数为每一行返回相同的结果。如果您使用 ROWS 关键字指定物理窗口,则结果是不确定的。

因此,据我所知,可以从文档中看出不确定的顺序 - 但是,该函数基于字母数字排序而不是处理行的顺序(这是通常持有的)给出确定性输出视图)。

这与其他分析函数的行为不同(使用带有ROWS关键字的物理窗口时):

这为所有不同的排序提供了一致的输出:

是否有关于在LISTAGG提供非确定性排序时如何应用排序的官方文档?

注意:此处对 的行为进行了ORDER BY NULL评论,说明:

在此示例中,元素已按字母顺序聚合,尽管有 NULL 排序子句。这似乎是使用常量 ORDER BY 表达式时的默认行为

但这只是对非 Oracle 站点中行为的评论。

0 投票
2 回答
3550 浏览

oracle - 在查询中对 Listagg 求和

我正在尝试对我所做的 listagg 查询中的值求和。

预期的结果应该是这样的

我的列表是这样的

此查询的目的是计算一行中空字段的数量。我创建了一个表,其中包含需要检查空值的字段列表。

结果 :

所以我这样写了我的查询:

但是,我收到错误 ORA-00936:缺少表达式。我不确定 Oracle 是否允许您对 listagg 函数求和。任何帮助表示赞赏。

0 投票
1 回答
2857 浏览

oracle11g - oracle 11g中光标中的Listagg

我试图创建一个在其选择语句中使用 LISTAGG 的游标 fetch_table_info。

select 语句可以单独执行,但编译过程会出现以下错误

找到 'LISTAGG',只有 CUME_DIST、DENSE_RANK、PERCENT_RANK、RANK、PERCENTILE_CONT 和 PERCENTILE_DISC 对 WITHIN GROUP 有效

提前非常感谢!

0 投票
2 回答
3649 浏览

amazon-redshift - 在 Amazon Redshift 上管理 LISTAGG 中的溢出

使用这篇文章中的示例:https ://blogs.oracle.com/datawarehousing/entry/managing_overflows_in_listagg

以下声明:

将生成以下输出:

假设上面的语句没有运行,并且我们的 LISTAGG 函数中的每一行可以返回 15 个字符的限制。这实际上是 Amazon Redshift 上的 65535。

在这种情况下,我们希望返回以下内容:

在 Amazon Redshift 中重新创建此结果以避免任何数据丢失并考虑速度的最佳方法是什么?

0 投票
0 回答
37 浏览

sql - 使用带有波兰语字符的 listagg

我对“listagg”功能有一点问题。我想用它把行连接成一个字符串,用逗号作为分隔符。我设法做到了这一点:

问题是波兰语字符,如 'ą'、'ę' 等在结果中显示不正确。我该如何解决?

波兰语字符在 SQL Developer 中无法正确显示;例如,我有用户“Grzegorz Brzęcki-Dębina”和“Paweł Kukiz”,在输出中我得到“Grzegorz-Brz*cki-D*bina, Pawe* Kukiz”。

正确显示它。列是 NVARCHAR2。

伙计,你是个天才:)那个链接很有帮助。我需要的是:

谢谢 :)

0 投票
1 回答
220 浏览

sql - Oracle sql listagg 基于另一列

我是 Oracle SQL 的新手,我需要处理如下任务。

我在这里附上了一张图片,我现在需要做的是,使用 SQL 从左侧显示右侧的结果。

我需要根据第 1 列 (C1) 列出第 2 列 (C2) 和第 3 列 (C3)
如果 C2 和 C3 仅获得一条记录且没有重复记录,
则结果显示为第一行:4316,Orange shipper 1、中国香港。
但是在 C1 中有一些棘手的情况,例如 4343/4403/4406。

C2 可能有重复的记录,但 C3 没有,反之亦然。

我尝试使用 rank_over,然后结果变为附件图像的左侧。

但在那之后,我不知道如何获得附件图像中右侧的结果。

图片在这里:
左侧是原始列和数据,我想得到像右侧一样的结果

0 投票
1 回答
2888 浏览

oracle - 如何在 Oracle 查询中使用 listagg 上的条件

我有 3 个表:table_A、table_B 和 table_C。Table_A 有一个主键,由 table_B 的外键引用。Table_C 有一个由 table_B 的外键引用的主键。设计是这样的:

查询:

我只是从一张 c.textdata 表中获取数据,而不是从 listagg 中获取数据。如果我尝试使用此查询:

我收到类似的错误:此处不允许使用组功能

如何给 listagg 参数一个条件,因为我需要来自 listagg 的数据?

0 投票
2 回答
4008 浏览

sql - 在 Oracle 中使用 LISTAGG 函数

我有两张桌子

我正在尝试使用 LISTAGG 函数并带来如下输出:

当我单独使用类别表时,我可以使用 LISTAGG 并正确汇总输出(没有 skuid)

使用以下查询:

但我无法将它与 prod 表连接并获得所需的输出。请帮忙。

0 投票
2 回答
167 浏览

plsql - 组合行输出以进行多列检查

我想根据多列检查将多行组合成单行。 在此处输入图像描述

只有当所有剩余的列都匹配时,Program_Type 才应该以逗号分隔的形式合并。

我尝试使用 listagg 但我无法实现它。我也尝试使用 connect by 但仍然无法检查所有条件。

任何帮助。

问候。

0 投票
2 回答
10553 浏览

oracle - 查询连接两个表并使用 LISTAGG 函数

我有两张桌子

我正在尝试使用 LISTAGG 函数并带来如下输出:

如果 specialprice 表中有一个条目并且 sysdate 在 startdate 和 enddate 之间,那么我需要考虑否则我需要从价格表中获取价值。在价格表中,一个 id 可能有两个条目,我需要列出这两个记录。specialprice 表可能没有价格表中的 id 条目。所以我正在使用 FULL OUTER JOIN

我构建的 PFB 查询:

但问题是我无法获得特价表值和键加入。请帮忙。