我有一个在SQL Developer上运行的SQL查询,它使用Listagg返回单个字段的一个或多个项.

实际上,该查询返回其中Listagg具有一个或多个项的记录.

我想要做的是过滤掉Listagg中只有一个项的记录,而只返回Listagg中有多个项的记录.

这是查询的一部分,它使用Listagg以及我想要做的事情的一些伪代码:

Select "SingleItem", listagg(distinct "MultipleItems", ', ') as "MultipleItems"
FROM my_results mr
WHERE EXISTS
(SELECT "SingleItem", "MultipleItems"
   FROM my_results
)
AND <"MultipleItems" contains more than 1 item>

有什么建议吗?

非常感谢.

推荐答案

我想你可以用HAVING COUNT(DISTINCT美元

SELECT
  "SingleItem",
  listagg(distinct "MultipleItems", ', ') as "MultipleItems"
FROM my_results mr
GROUP BY
  "SingleItem"
HAVING COUNT(DISTINCT "MultipleItems") > 1;

Sql相关问答推荐

Oracle中的分层查询

基于时间的SQL聚合

SQL(PostgreSQL)从条件创建点表

一个SQL查询将在需要的地方多次返回同一成员

检索上一个星期四和上一个星期三

找到最新的连线

带日期函数的复合索引不允许只扫描索引吗?

按两列分组,并根据SQL中的条件返回第三个列值

在UNION查询中查找MIN

Postgres SQL查询从字符串中获取邮箱地址

根据不同日期标准分配组的逻辑

Oracle函数中无法动态迭代创建的SYS_REFCURSOR

插入行时的行安全策略问题

SQL获取两个日期范围之间的计数

在 postgresql 中保存带有时间戳的几何类型数据

Django only() 和 values() 不适用于 prefetch_related()

SQL Server 查找存在于所有不同时期(或序列)中的条目

在 PostgreSQL 中使用重音敏感排序进行重音不敏感搜索

具有日期时间条件的存储过程

如何比较同一张表中的行并进行相应更新