加入ORACLE DB中的行

时间:2013-08-01 15:22:22

标签: sql database oracle

我需要在单行中连接几个(不同用户)的数据。我会试着更好地解释一下: 我有一个这样的表(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
-----------------------------

我想要的是那样的(3排)

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

如何使用ORACLE DB在同一个用户上加入这些行?感谢

2 个答案:

答案 0 :(得分:1)

您可能正在寻找LISTAGG

这只是用逗号分隔。

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

如果您需要按换行符分隔,请使用以下内容并绑定到标签

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

Fiddle

答案 1 :(得分:1)

在StackOverflow here中检查此答案,这可能就是您要找的。