【问题标题】:When clause in listagg list [duplicate]listagg列表中的when子句[重复]
【发布时间】:2019-06-18 05:26:57
【问题描述】:

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

例如,当: c = 1 并且 LITAG 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)

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    这行不通。 LISTAGG() 返回一个恰好包含逗号的字符串。这与值列表不同。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 2023-01-21
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      相关资源
      最近更新 更多