Присоедините start_date и _end_date к другой таблице и суммируйте

Таблица 1 Столбцы таблицы:

cancel_date    product  total_cancels
6/1/2017       a        100
6/1/2017       b        40
6/2/2017       b        10
6/3/2017       b        20
.
.
.
6/1/2018       a        40
6/1/2018       b        10

Таблица 2

realdate  cancel_start_date    cancel_end_date
6/1/2017    6/1/2016           4/1/2017
6/2/2017    6/2/2016           4/2/2017
6/3/2017    6/3/2016           4/3/2017
.
.
.

поэтому table1.cancel_date между t2.cancel_start_date и t2.cancel_end_date, как я могу объединить эти две таблицы?

что я хочу получить

product    realdate      total_cancels   cancel_date between start_date and end_date
a          6/1/2017       100000         6/1/2016-4/30/2017 
b          6/1/2017       8000           6/1/2016-4/30/2017
a          6/2/2017       100000         6/2/2016-5/1/2017
b          6/2/2017       8000           6/2/2016-5/1/2017
...

1 ответ

То, что вы хотите сделать, это присоединить table_2 к table_1, используя условие on так, что table_1. Параметр cancel_date находится между table_2.cancel_start_date и table_2.cancel_end_date. Но сначала нам нужно использовать функцию DATE_PARSE, чтобы сопоставить даты. Наконец, просто подведите итоги.

SELECT
  table_1.product,
  table_2.realdate,     
  SUM(total_cancels) AS total_cancels,   
  CONCAT(table_2.cancel_start_date, '-', table_2.cancel_end_date) as start_to_end
FROM table_1 
JOIN table_2
WHERE DATE_PARSE(table_1. cancel_date, '%m/%d/%Y') 
  BETWEEN DATE_PARSE(table_2.cancel_start_date, '%m/%d/%Y') 
   AND DATE_PARSE(table_2.cancel_end_date, '%m/%d/%Y') 
GROUP BY 1, 2, 4 
Другие вопросы по тегам