Могу ли я использовать вывод одного запроса listagg в предложении where другого запроса listagg

select * from [TABLE_NAME] limit 5
2
задан Littlefoot 13 July 2018 в 06:29
поделиться

2 ответа

Ну, из вашего примерного запроса не совсем ясно, почему вы хотите первый LISTAGG.

Похоже, в основном это то, что вы пытаетесь сделать:

   SELECT LISTAGG (data2, ',') WITHIN GROUP (ORDER BY data2)
     INTO v_data2
     FROM table1
    WHERE data1 IN ( select data1 from table1  where .. );--some other where clause
2
ответ дан Kaushik Nayak 17 August 2018 в 13:38
поделиться

В принципе, вы должны расколоть V_DATA значение, разделенное запятыми, на строки.

Вот пример, основанный на схеме Скотта:

SQL> DECLARE
  2     v_data    VARCHAR2 (100);
  3     v_data2   VARCHAR2 (100);
  4  BEGIN
  5     SELECT LISTAGG (deptno, ',') WITHIN GROUP (ORDER BY deptno)
  6       INTO v_data
  7       FROM dept
  8      WHERE deptno IN (10, 20, 30);
  9
 10     DBMS_OUTPUT.put_line (v_data);
 11
 12     SELECT LISTAGG (ename, ',') WITHIN GROUP (ORDER BY deptno)
 13       INTO v_data2
 14       FROM emp
 15      WHERE deptno IN (select regexp_substr(v_data, '[^,]+', 1, level)
 16                       from dual
 17                       connect by level <= regexp_count(v_data, ',') + 1
 18                      );
 19
 20     DBMS_OUTPUT.put_line (v_data2);
 21  END;
 22  /
10,20,30
CLARK,KING,MILLER,ADAMS,FORD,JONES,SCOTT,SMITH,ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD

PL/SQL procedure successfully completed.

SQL>
2
ответ дан Littlefoot 17 August 2018 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: