循环遍历SQL表中的所有行和concat唯一值

cor*_*one 1 sql oracle foreach grouping stored-procedures

我有两个表要合并.

表1由多行组成,下面是几个 -

col1   col2  col3  col4

val1   val2  val3  val4
val1   val2  val3  val5
val1   val2  val3  val6
valx   valy  valz  val4
valx   valy  valz  val5
Run Code Online (Sandbox Code Playgroud)

(val*都是字符串)

表2由唯一的行(大约1000个)组成 - col1 col2 col3 col4

val1   val2  val3  -
valx   valy  valz  -
vala   valy  valz  -
Run Code Online (Sandbox Code Playgroud)

我想合并这两个表,表2如下 -

col1   col2  col3  col4

val1   val2  val3  val4,val5,val6
valx   valy  valz  val4,val5
vala   valy  valz  -
Run Code Online (Sandbox Code Playgroud)

表2中的Foreach行,我想找到col4表1的唯一值并将它们连接起来

ajm*_*d04 5

你可以使用你的格式作为字符串聚合连接Table1,

SELECT col1,
     col2,
     col3,
     listagg(col4, ',') within GROUP(
ORDER BY col4) AS col4
FROM agg_test
GROUP BY col1,
     col2,
     col3;
Run Code Online (Sandbox Code Playgroud)

你可以得到如下结果:

col1    col2    col3    col4
______________________________________    
val1    val2    val3    val4,val5,val6
valx    valy    valz    val4,val5
Run Code Online (Sandbox Code Playgroud)