考虑一个包含三个行的名称的数据库表:
Peter
Paul
Mary
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将其转换为单个字符串Peter, Paul, Mary?
是否可以构造SQL来连接多行的列值?
以下是一个例子:
表A.
PID A B C
表B.
PID SEQ Desc A 1 Have A 2 a nice A 3 day. B 1 Nice Work. C 1 Yes C 2 we can C 3 do C 4 this work!
SQL的输出应该是 -
PID Desc A Have a nice day. B Nice Work. C Yes we can do this work!
所以输出表的Desc列基本上是表B的SEQ值的串联?
有没有SQL的帮助?
我有一个很长的查询,跨多个表,我将四个值连接为所有者(名字,中间名和姓氏+组织).所有其他列都是相同的,但有多个所有者,因此,我想聚合多行.
我所看到的是(配对)
# Owner
1 Sam Smith, AAA
2 Stan Bird, BBB
2 Nancy Bird, BBB
3 Mike Owen, CCC
Run Code Online (Sandbox Code Playgroud)
我想看到的是
# Owner
1 Sam Smith, AAA
2 Stan Bird, Nancy Bird, BBB
3 Mike Owen, CCC
Run Code Online (Sandbox Code Playgroud)
注意事项:
我试过CASE(COLLECT...但这会杀死我的联系:
错误 - "无法从套接字读取更多数据"
SysAdmin,不知道为什么
我尝试过其他一些事情,没有运气.我当前的查询产生了所需的行数,但只是砍掉了第二个所有者.
我不确定在这里发布整个查询是否明智.请告诉我这是否有帮助.
更新2012-01-29
wm_concat之前我使用不正确,但是当我使用它时,我收到此错误:
ORA-06502: PL/SQL: numeric or value error: character string buffer too
small ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 30
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause:
*Action: …Run Code Online (Sandbox Code Playgroud)