Объединение конкатенации строк в Oracle 10g [дубликат]

На этот вопрос уже есть ответ здесь:

Объединить результаты SQL-запроса в Oracle 7 ответов

м с использованием Oracle 10 г, у меня есть сценарий, подобный этому:

Без имени

-----

1 Рони

1 Джеймс

1 Абы

2 Сам

2 Вилли

3 Майк

Мне нужно объединить и объединить строки (с одним пробелом между ними), чтобы получить результаты:

Без имени

-----

1 Рони Джеймс Эйби

2 Сэм Вилли

3 MikeI '

Я использую Oracle 10g и должен реализовать это, используя SQL, а не PL / SQL. Есть ли выход?

 Noel26 июн. 2013 г., 08:43
Несколькодубликаты
 Dinup Kandel26 июн. 2013 г., 10:04
@ Арджун, ты нашел решение? Я изменил свой ответ, чтобы соответствовать 10g.

Ответы на вопрос(4)

вы можете использовать функцию LISTAGG, но, к сожалению, не на 10G

Здесь есть несколько приемов для более ранних версий, однако они требуют написания функции.

http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php

увидетьдемо здесь

 user56586902 июл. 2014 г., 23:51
Это стало доступно с 11g.2.

Попробуй этоSQL запрос

SELECT 
  [No],
  STUFF((
    SELECT ' ' + Name
    FROM #tbl_concat 
    WHERE ([No] = Results.[No]) 
    FOR XML PATH (''))
  ,1,0,'') AS NameValues
FROM #tbl_concat Results
GROUP BY [No] 
 Frank Myat Thu05 июл. 2013 г., 09:08
Ключевое слово STUFF отлично, спасибо @Msyma.
 ventiseis13 дек. 2016 г., 09:36
FOR XML PATH являетсяT-SQL (Microsoft SQL Server)

Попробуйте этот запрос

select No  , rtrim(Name,',') Name
   from ( select No , Name , rn from yourtable
           model
  partition by (No)
  dimension by (row_number() over
 (partition by No order by Name) rn
 )
 measures  (cast(Name as varchar2(40)) Name)
   rules
 ( Name[any] order by rn desc = Name[cv()]||' '||Name[cv()+1]
   )
  )
    where rn = 1
    order by NO

Вот твой sqlдемонстрация

 Billy Moon29 дек. 2013 г., 01:05
Можно ли превратить это в функцию многократного использования, чтобы разрешить использование как ...?select no, gconcat(name) from mytable;
 Noel26 июн. 2013 г., 08:45
LISTAGG не поддерживается в oracle10g
 Dinup Kandel26 июн. 2013 г., 09:54
@Horrendous_Space_Kablooie да, спасибо, я думал, что это был 11g. теперь это сделано.

Ваш ответ на вопрос