简体   繁体   English

在ORACLE DB中联接行

[英]Join rows in ORACLE DB

I need to join several datas (of differents users) in single rows. 我需要在单行中连接(不同用户的)多个数据。 I'll try to explain better: I have a table like this (6 rows) 我会尝试更好地解释:我有一个这样的表(6行)

   |  User   | Name   | Data
=============================
 1 |  user1  | Miky   | data1
-----------------------------
 2 |  user2  | Minny  | data1
-----------------------------
 3 |  user1  | Miky   | data2
-----------------------------
 4 |  user1  | Miky   | data3
-----------------------------
 5 |  user3  | Donald | data1
-----------------------------
 6 |  user3  | Donald | data2
-----------------------------

and what I desire is something like that (3 rows) 我想要的是这样的东西(3行)

   |  User   | Name   | Data
=============================
 1 |  user1  | Miky   | data1
   |         |        | data2
   |         |        | data3
-----------------------------
 2 |  user2  | Minny  | data1
-----------------------------
 3 |  user3  | Donald | data1
   |         |        | data2
-----------------------------

how can I join those rows on a same User using the ORACLE DB? 如何使用ORACLE DB在同一用户上联接这些行? Thanks 谢谢

You might be looking for LISTAGG 您可能正在寻找LISTAGG

This is just separated by comma. 这只是用逗号分隔。

SELECT  "User", "Name",
RTRIM(LISTAGG("Data" || ', ') WITHIN GROUP(ORDER BY 1),', ') "Data"
FROM  Table1
 GROUP BY "User", "Name";

If you need to separate by line breaks, use the below and bind to a label 如果需要按换行符分隔,请使用以下内容并绑定到标签

SELECT  "User", "Name",
RTRIM(LISTAGG("Data" || '<br/>') WITHIN GROUP(ORDER BY 1),', ') "Data"
FROM  Table1
 GROUP BY "User", "Name";

Fiddle 小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM