В salesforce_event
, у нас есть created_date
, account_id
и who_id
. В salesforce_task
у нас есть created_date
, close_date
, account_id
и who_id
.
event
и task
могут быть объединены либо account_id
(если имеется) или who_id
. Похоже, что будет необходимо 2 соединения.
Я хочу получить дни между событием created_date
и заданием created_date
, если задача close_date
в течение последних 30 дней, когда создается событие .
Существует ли эффективный способ достижения этого? То, что у меня есть, ниже, и оно работает вечно, а также, кажется, неправильно
select
se.id,
min(se.created_date) - min(coalesce(st1.close_date,st.close_date))
from salesforce_event se
left join salesforce_task st on se.who_id = st.who_id and st.close_date >= se.created_date - 30 and st.close_date <= se.created_date
left join salesforce_task st1 on se.account_id = st1.account_id and st1.close_date >= se.created_date - 30 and st1.close_date <= se.created_date group by 1
Спасибо!