1

我有两个要合并的表。

表 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

(val* 都是字符串)

表 2 包含唯一行(大约 1000 行)- col1 col2 col3 col4

val1   val2  val3  -
valx   valy  valz  -
vala   valy  valz  -

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

col1   col2  col3  col4

val1   val2  val3  val4,val5,val6
valx   valy  valz  val4,val5
vala   valy  valz  -

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

4

2 回答 2

5

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

SELECT col1,
     col2,
     col3,
     listagg(col4, ',') within GROUP(
ORDER BY col4) AS col4
FROM agg_test
GROUP BY col1,
     col2,
     col3;

你可以得到如下结果:

col1    col2    col3    col4
______________________________________    
val1    val2    val3    val4,val5,val6
valx    valy    valz    val4,val5
于 2013-02-05T04:39:57.913 回答
0

您要求的是 table2 中名为 col4 的多值列。Oracle 不支持多值列。您可以做的是使用 table2 的外键创建另一列并将您的多值数据保存在那里。

例如

Table 3

table2_id value
1         val4
1         val5
1         val6
2         val4
2         val5
于 2013-02-05T04:09:17.100 回答