У меня вопрос относительно перекрытия в SQL, у меня есть следующая структура и данные из моей базы данных:
Table A (Id = uniqueidentifier)
| Name | StartDate | EndDate | DaysToReceive |
------------------------------------------------------
| A | 2019-08-26 | 2020-04-13 | 232 |
| A | 2019-12-15 | 2020-04-11 | 119 |
| A | 2020-03-06 | 2020-03-31 | 26 |
| B | 2020-01-07 | 2020-01-31 | 25 |
| B | 2020-02-11 | 2020-02-29 | 19 |
Мне нужно получить дни для получения, но если есть перекрытие, я нужна разница между минимальной датой и максимальной датой, иначе я использую DaysToReceive
Суммированный столбец.
Я пытаюсь получить результат, который будет выглядеть так:
| Name | DaysToReceive |
------------------------
A | 232
B | 44
I удалось получить этот запрос, но работает только в дни перекрытия.
select DATEDIFF(d, MIN(t1.dt),MAX(t1.enddt)) + 1 as DaysToReceive
from (
select distinct cp1.dt, min(cp2.dt) enddt
from ( select StartDate as dt, Id from TableA ) cp1,
( select EndDate as dt from TableA ) cp2
where cp2.dt > cp1.dt cp1.Id = cp2.Id
group by cp1.dt
) t1, TableA t2
where t2.StartDate between t1.dt and t1.enddt
group by t1.dt, t1.enddt
Заранее благодарим. Ура