2013-02-05 62 views
1

我有兩個要合併的表。循環遍歷SQL表中的所有行和concat唯一值

表1由許多行的,下面是一個few-

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中的獨特價值和Concat的他們

+1

您正在使用什麼RDBMS? –

+0

我正在使用OracleDB。 – cornerstone

+0

什麼版本的oracle? – FoolishSeth

回答

5

你可以使用格式爲您Table1爲字符串聚集Concat的,

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 
+0

工作就像一個魅力! – cornerstone

0

你所請求的是一個名爲COL4表2中多值列。 Oracle不支持多值列。你可以做的是用table的外鍵創建另一列,並在那裏保存你的多值數據。

例如,

Table 3 

table2_id value 
1   val4 
1   val5 
1   val6 
2   val4 
2   val5 
+0

它不一定是一個多值列。可以只串接一個字符串? – cornerstone