sql - 统一多个 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()
在评论中所说的去做,你可以在这里阅读关于文档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
推荐阅读
- mysql - 无法在 Amazon Aurora 上使用 MEMORY 引擎创建表
- keras - CNN Keras 多标签输出预测
- html - 我怎样才能把一个圆圈的 SVG 图像放在网页的底部,这样你就只能一直看到上半部分
- angular - 如何通过加入我的应用程序重定向到子路由?
- javascript - 为父实例和对象实例之间的通信装配事件发射器的正确方法?
- python - 有没有办法避免 Python 3 中的多个 html.unescape 调用?
- service-worker - 服务工作者在每个子 URL 上注册
- javascript - 在多个 LitElement 中传递多个重复属性
- javascript - 请问这段代码有什么问题,这是我的作业,我一直出错
- python - 使用优先附着算法的无标度网络