как сгруппировать в одну запись в oracle - PullRequest
0 голосов
/ 21 апреля 2020

привет, у меня проблема с oracle

Я хочу сделать следующее

select name, type from table_1 where name = 'carlos' group by type, name;

что я вернул две записи

|name |type|
|Carlos| 3 |
|Carlos| 4 |

Что я хочу сделать - вытащить одну запись из следующей формы

|name| type|
|Carlos| 3,4 |

Я пробовал ее с помощью rtrim, но она много раз возвращает мне тип, который я хочу, чтобы он выходил только один раз

Select Name, rtrim(xmlagg(xmlelement(e,type||’,’) type 
Where name = 'carlos' group by name;

что я вернул одной записи

|name| type|
|Carlos| 3,4,4,4|

не могли бы вы мне помочь

1 Ответ

0 голосов
/ 21 апреля 2020

Вам просто нужно использовать функцию listagg():

select name, listagg(type,',') within group (order by type) 
  from table_1 
 where name = 'carlos' 
 group by name

Если у вас есть повторяющиеся значения type и вы хотите различить попадание в разделенный запятыми результат строки, тогда использование:

select name, listagg(type,',') within group (order by type) 
  from
  (
   select distinct name, type 
     from table_1 
    where name = 'carlos' 
  )
  group by name     

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...