我正在尝试使用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)
答案 0 :(得分:0)
那是行不通的。 LISTAGG()
返回一个字符串,该字符串会发生,其中包含逗号。这与值列表不同。
您的意图真的不清楚。我的猜测是您想要这样的东西:
SELECT a, c
FROM table2 t2
WHERE t2.c IN (SELECT t1.b FROM table1 t1 WHERE t1.a = t2.a)