с полями name, date_start, date_end
есть table_2 t2 с name, date_1, date_2
как сделать join, с условиями t1.name = t2.name and t2.date_1 >= t2.date_start and t1.date_2 <= t2.date_end ?
обычный джоин так не может, судя по всему.
попробовал ASOF JOIN - у него ограничение на одно неравенство в условии.
Но даже если оставить t1.name = t2.name and t2.date_1 >= t2.date_start, то в результате джоина остается только одно значение name
можно в where перенести t2.date_1 >= t2.date_start and t1.date_2 <= t2.date_end
спасибо вроде бы так подходит)
А какая версия у вас ? Как я помню в одной из последней версией добавили возможность такую в join
вроде только OR добавляли
join поддерживает предикаты, тут на версии КХ смотреть нужно create table cem_test.t20220208_GEO4G ENGINE MergeTree() order by (imsi, end_time) as select a.*, g.* from cem.GEO_4G_shard g join cem_test.t20220208_alarams_e a on toInt64(a.cellid) = g.end_cell where g.end_time >= a.ts - toIntervalMinute(90) and g.end_time < a.ts + toIntervalMinute(90)
Обсуждают сегодня