如何在listagg和substr上应用MINUS?

时间:2017-08-27 20:14:49

标签: oracle

我有一个应用于表1的listagg函数,我想与另一个查询中返回的子字符串进行比较。

返回第一个查询中的所有元素。

我想获取第一个查询(listagg)中存在但不存在于second(substr)中的记录。

1 个答案:

答案 0 :(得分:1)

MINUS对每个子查询的投影进行操作。因为您在子查询中生成聚合字符串,所以您有不同的字符串,因此MINUS不会消除任何内容。

您需要做的是将MINUS应用于单个值,然后将LISTAGG()应用于结果集。除了您使用col2进行排序外,因此MINUS可能不是最佳解决方案。

也许这就是你所需要的:

select listagg(col,',') within group (order by col2 desc) as name 
from table1
where table1.col not in
    ( select table2.col 
      from table2 )