Добавьте дополнительные столбцы в операторы MIN и MAX из ВНУТРЕННЕГО СОЕДИНЕНИЯ

# #sql #google-bigquery #max #inner-join #min

Вопрос:

В настоящее время у меня есть запрос, который возвращает столбец MIN и MAX на основе столбцов даты из tbl1 и tbl2 на основе соединения person_id из двух таблиц. Теперь я хочу разработать этот запрос, чтобы ввести дополнительные столбцы из двух таблиц.

В этих двух таблицах предусмотрено несколько мероприятий на человека. Короче говоря, то, что я хотел бы сделать, — это найти событие, связанное с комбинацией person_id и МИНИМАЛЬНОЙ даты, которая уже была запрошена ниже. Таким образом, в tbl1 и tbl2 есть два дополнительных идентификатора событий, но мне нужен только тот, который связан с приведенной ниже комбинацией МИНИМАЛЬНОЙ даты и идентификатора человека.

Текущий запрос, возвращающий столбец MIN и MAX на основе столбцов дат из tbl1 и tbl2

 SELECT tbl1.person_id,
       LEAST(MIN(tbl1.Date), MIN(tbl2.Date)) AS start_date,
       GREATEST(MAX(tbl1.Date), MAX(tbl2.Date)) AS end_date,
FROM `database_name.table_name1` tbl1 JOIN
     `database_name.table_name2` tbl2
     ON tbl1.person_id = tbl2.person_id JOIN
     `database_name.table_name3` tbl3
     ON tbl1.person_id = tbl3.person_id    
GROUP BY tbl1.person_id
 

желаемый результат:

 Col_1: Person_id (Integer, e.g. 1234)
Col_2: start_date (YYYY-MM-DD)
Col_3: end_date (YYY-MM-DD)
Col_5: additional column that is the most recent from either table based on two different columns that are the match to the combination of the person_id in column 1 and the start_date in column 2. This could be an INTEGER from either tbl1.eventID1 or tbl2.eventID2
Col_5: same as above but a STRING
 

Я надеюсь, что в этом есть смысл.