Сводные столбцы, но должны быть вставлены отдельные термины - PullRequest
0 голосов
/ 25 октября 2011

У меня есть две таблицы, и я хочу объединить их

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 из TERMS_TABLE, тогда я не должен вставлять этот термин в NEW_TFIDF_TABLE, например

результат должен быть:

NEW_TFIDF_TABLE

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

Как я могу это сделать?

1 Ответ

2 голосов
/ 25 октября 2011

Если вы используете 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
...