Объедините несколько строк SQL

Для каждого ids несколько имен появляются в нескольких строках. Как сделать так, чтобы все они отображались в одной строке?

select 
      cli.client, stb.macaddres, stb.unica as card, 
      pro.name 
from 
      clientes cli
inner join boxes stb on stb.nuclient = cli.nuclient
inner join date.servicio ser on ser.ids = stb.ids
inner join date.producto pro on pro.proid = ser.serid
where 
      cli.client=7;

Неожиданные результаты:

client macaddress  única  name
7       xxxxxxxxx  56565 product1
7       xxxxxxxxx  56565 product2
7       xxxxxxxxx  56565 product3

Желаемые результаты:

client  macaddress  única  name
 7       xxxxxxxxx  56565 product1, product2,product3`

Намек: listagg().

Gordon Linoff 26.10.2018 01:45

Почему? Кому нужны результаты в таком формате? Это можно сделать, но часто такой формат является признаком плохих требований или плохого дизайна.

mathguy 26.10.2018 02:05
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
128
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать listagg(), как сказал Гордон в комментарии, вы можете прочитать здесь о документации ListAGG ()

И по вашему запросу:

select 
     cli.client, stb.macaddres, stb.unica as card 
     LISTAGG(pro.name, ', ') WITHIN GROUP (ORDER BY pro.proid ASC) "Name"
from 
     clientes cli
inner join boxes stb on stb.nuclient = cli.nuclient
inner join date.servicio ser on ser.ids = stb.ids
inner join date.producto pro on pro.proid = ser.serid
where 
     cli.client = 7;
Group By
    cli.client, stb.macaddres, stb.unica

Спасибо за ваш ответ именно то, что я хотел

Javier Malag 26.10.2018 16:01

С радостью поможем .. :)

dwir182 26.10.2018 16:02

Другие вопросы по теме