#oracle #distinct #aggregate #string-aggregation
#Oracle #различные #агрегат #строка-агрегация
Вопрос:
У меня есть две таблицы, и я хочу их объединить
TERMS_TABLE
ID | TERMS
309 | 'hardware'
309 | 'software'
309 | 'computer'
TFIDF_TABLE
ID | TERMS
309 |'computer,phone,mp3....'
Теперь я хочу добавить столбец ТЕРМИНОВ TERMS_TABLE
в столбец TFIDF_TABLE
терминов, но если TFIDF_TABLE уже содержит ТЕРМИНЫ TERMS_TABLE, тогда я не должен вставлять этот термин в NEW_TFIDF_TABLE , например
результат должен быть:
NEW_TFIDF_TABLE
ID | TERMS
309 |'computer,phone,mp3....,hardware,software'
Как я могу это сделать?
Ответ №1:
Если вы используете 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
Комментарии:
1. Почему существует 4 таблицы t1, t2, t3, t4? У меня есть только две таблицы и таблица результатов