小编典典

用于连接 Oracle 中多行的列值的 SQL 查询

all

是否可以构造 SQL 来连接多行的列值?

下面是一个例子:

Table A

PID
A
B
C

Table 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 有帮助吗?


阅读 73

收藏
2022-07-01

共1个答案

小编典典

根据您拥有的版本,有几种方法 - 请参阅有关字符串聚合技术的 oracle 文档。一个非常常见的方法是使用LISTAGG

SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B GROUP BY pid;

然后加入以A挑选pids您想要的。

注意: 开箱即用,LISTAGG仅适用于VARCHAR2列。

2022-07-01