/ /列を集約しますが、別個の用語を挿入する必要があります。 - oracle、distinct、aggregate、string-aggregation

集計列ではあるが別個の用語を挿入する必要があります。 - oracle、distinct、aggregate、string-aggregation

私は2つのテーブルがあり、それらをマージしたい

TERMS_TABLE

ID  | TERMS
309 | "hardware"
309 | "software"
309 | "computer"



TFIDF_TABLE

ID | TERMS
309 |"computer,phone,mp3...."

今、TERMS列を追加したい TERMS_TABLE の用語列に TFIDF_TABLE TFIDF_TABLEに既にTERMS_TABLEのTERMSが含まれている場合、この用語をNEW_TFIDF_TABLEに挿入しないでください

結果は次のようになります。

NEW_TFIDF_TABLE

ID | TERMS
309 |"computer,phone,mp3....,hardware,software"

どうやってやるの ?

回答:

回答№1は2

Oracle 11を使用している場合は、これを試すことができます:

select t3.id, t3.terms||","||t4.terms terms from
(
select t1.id, listagg(t1.terms,",") within group (order by t1.terms)  terms
from terms_table t1 join tfidf_table t2 on  t1.id=t2.id
where instr(t2.terms,t1.terms)=0
group by t1.id )
t3 right outer join tfidf_table  t4 on t3.id=t4.id

Oracle 10では、試してみることができます

select t3.id, t3.terms||","||t4.terms terms from
(
select t1.id, wm_concat(t1.terms)  terms
from terms_table t1 join tfidf_table t2 on  t1.id=t2.id
where instr(t2.terms,t1.terms)=0
group by t1.id )
t3 right outer join tfidf_table  t4 on t3.id=t4.id