首页 > 解决方案 > 统一多个 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`

标签: sqloracle

解决方案


你可以按照戈登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

推荐阅读