是否可以构造 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 有帮助吗?
根据您拥有的版本,有几种方法 - 请参阅有关字符串聚合技术的 oracle 文档。一个非常常见的方法是使用LISTAGG:
LISTAGG
SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description FROM B GROUP BY pid;
然后加入以A挑选pids您想要的。
A
pids
注意: 开箱即用,LISTAGG仅适用于VARCHAR2列。
VARCHAR2