listagg列表中的when子句

时间:2019-01-24 13:01:49

标签: sql oracle

我正在尝试使用WHEN IN子句来引用LISTAGG的结果。

例如,在以下情况下: c = 1,LISTAG BEBE为(1、2、3、4),代码找不到公共部分(数字1)。

WITH
t1 as (SELECT a, LISTAGG(b,', ') as BEBE
       FROM table1 WITHIN GROUP (ORDER BY a)
       GROUP BY a)

SELECT a, c
FROM table2 t2
LEFT JOIN t1 ON t1.a = t2.a
WHERE c IN (SELECT t1.BEBE FROM t1)

1 个答案:

答案 0 :(得分:0)

那是行不通的。 LISTAGG()返回一个字符串,该字符串会发生,其中包含逗号。这与值列表不同。

您的意图真的不清楚。我的猜测是您想要这样的东西:

SELECT a, c
FROM table2 t2 
WHERE t2.c IN (SELECT t1.b FROM table1 t1 WHERE t1.a = t2.a)