У меня есть таблица с заказами, что является выглядит следующим образом:SQL сумма данных между 2 датами в одном столбце
t1
+-----------+---------+------------+
| client ID | order q | order date |
+-----------+---------+------------+
| 01 | 100 | 01-02-2016 |
| 01 | 350 | 03-05-2016 |
+-----------+---------+------------+
И у меня есть вторая таблица с продаж:
t2
+-----------+-------+------------+
| client ID | sales | sales date |
+-----------+-------+------------+
| 01 | 50 | 03-02-2016 |
| 01 | 50 | 10-02-2016 |
| 01 | 300 | 04-05-2016 |
| 01 | 50 | 15-05-201 |
+-----------+-------+------------+
Цель состоит в том, чтобы получить SUM
продавецов больше, чем дату первого заказа и МЕНЬШЕ, чем дату второго заказа :
Результат
+-----------+---------+-------+
| cliend ID | order q | sales |
+-----------+---------+-------+
| 01 | 100 | 100 |
| 01 | 350 | 350 |
+-----------+---------+-------+
Первая идея заключается в том, чтобы сделать оценку даты заказа как
DENSE_RANK() OVER(PARTITION BY [client ID] ORDER BY [order date] ASC) AS R
затем сделать что-то вроде этого:
select
client ID,
order q,
sum (sales) as sales
from
t2
left outer join
t2.client ID = t1.client ID
where
[sales date] >= [order date]
and [sales date] <= [order date] in (select [order date]
from t2
where (R < (R+1)))
group by
client ID, order q
Я знаю, что это неправильно, но это логика в моей голове.
Не могли бы вы дать мне некоторые идеи, как это сделать?
Предоставьте также данные испытаний – TheGameiswar