我的查询需要连接2列,然后根据ID在一个单元格中排序,该单元格由;从表中分离。
这是我的桌子:
ID Name Contact_type Contact_number
1 ALEX Mobile 12313
2 ALEX OfficeNumber 879879
3 FLYNN Mobile 12342
4 FLYNN OfficeNumber 656757我已经尝试了两栏: Contact_type和contact_number。但是,我很难把它们放在一个牢房里,而关键的结果并不能满足我的需要。
select a.ID, a.Name, a.contact_type ||':'|| a.contact_number
from e_address a我需要输出:
ID Name Contacts
1 ALEX Mobile:12313;OfficeNumber:879879
2 FLYNN Mobile:12342;OfficeNumber:656757发布于 2019-09-04 10:54:40
您可以使用聚合作为listagg()。
select row_number() over (order by min(id) as id,
a.Name,
listagg(a.contact_type ||':'|| a.contact_number, ';') within group (order by a.contact_type) as contacts
from e_address a
group by a.name;注意,您已经更改了数据的id列。这似乎很尴尬。也许你真的想要min(id)之类的东西。
发布于 2019-09-04 10:53:59
您可以通过以下方法对简单的listagg()组执行此操作:
select a.ID
, a.Name
, listagg(a.contact_type ||':'|| a.contact_number, ';') within group(order by a.contact_type ||':'|| a.contact_number) as Contacts
from e_address a
group by a.ID, a.Namehttps://stackoverflow.com/questions/57786857
复制相似问题