Как я могу объединить несколько строк в разграниченный запятой список в Oracle? [дубликат]

101
задан Community 23 May 2017 в 12:34
поделиться

3 ответа

Вот простой путь без stragg или создания функции.

create table countries ( country_name varchar2 (100));

insert into countries values ('Albania');

insert into countries values ('Andorra');

insert into countries values ('Antigua');


SELECT SUBSTR (SYS_CONNECT_BY_PATH (country_name , ','), 2) csv
      FROM (SELECT country_name , ROW_NUMBER () OVER (ORDER BY country_name ) rn,
                   COUNT (*) OVER () cnt
              FROM countries)
     WHERE rn = cnt
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1;

CSV                                                                             
--------------------------
Albania,Andorra,Antigua                                                         

1 row selected.

, Поскольку другие упомянули, если Вы находитесь на 11-граммовом R2 или больше, можно теперь использовать listagg, который намного более прост.

select listagg(country_name,', ') within group(order by country_name) csv
  from countries;

CSV                                                                             
--------------------------
Albania, Andorra, Antigua

1 row selected.
75
ответ дан Daniel Emge 24 November 2019 в 04:38
поделиться

Самым быстрым путем это должно использовать Oracle, собирают функцию.

можно также сделать это:

select *
  2    from (
  3  select deptno,
  4         case when row_number() over (partition by deptno order by ename)=1
  5             then stragg(ename) over
  6                  (partition by deptno
  7                       order by ename
  8                         rows between unbounded preceding
  9                                  and unbounded following)
 10         end enames
 11    from emp
 12         )
 13   where enames is not null

Посещение сайт спрашивают tom и поиск на 'stragg' или 'конкатенацию строк'. Много примеров. Существует также не - зарегистрированная функция оракула для достижения потребностей.

4
ответ дан tuinstoel 24 November 2019 в 04:38
поделиться

Я должен был всегда писать некоторым МН / SQL для этого, или я просто конкатенирую'', к полю и копии в редактора и удаляют CR из списка, дающего мне одна строка.

таким образом,

select country_name||', ' country from countries

Немного длинный обветренный оба пути.

, Если Вы смотрите на, Спрашивают Tom, Вы будете видеть загрузки возможных решений, но они все возвращаются к описаниям типа и/или МН / SQL

Спрашивают Tom

1
ответ дан Peter Mortensen 24 November 2019 в 04:38
поделиться
Другие вопросы по тегам:

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