Для каждого 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()
, как сказал Гордон в комментарии, вы можете прочитать здесь о документации 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
Спасибо за ваш ответ именно то, что я хотел
С радостью поможем .. :)
Намек:
listagg()
.