首页 > 解决方案 > 如何附加具有相同唯一标识符的重复记录?

问题描述

如何将下面的地址列附加到一个中?它们共享相同的唯一标识符,但由于它基本上打开多个房间而重复。

KeyID | KeyName | Room
00001 | 452-BF  | A-206
00001 | 452-BF  | A-207
00001 | 452-BF  | A-208

这是我的sql:

Select
k.keyid,
k.keyname,
r.room
from key k
join room r
on k.keyid = r.keyid
;

如何格式化我的 slq 以获得以下结果:

KeyID | KeyName | Room
00001 | 452-BF  | A-206,A-207,A-208

我也在 12c 版本的 oracle sql(12.1.0.2.0)

标签: sqloracleaggregate-functions

解决方案


您使用listagg()

Select k.keyid, k.keyname,
       listagg(r.room, ',') within group (order by r.room) as rooms
from key k join
     room r
     on k.keyid = r.keyid
group by k.keyid, k.keyname;

推荐阅读