У меня есть некоторые данные, где через некоторое время тип данных может обновляться.
ID Type Start End
1 A 01/01/2017 02/01/2017
1 A 02/01/2017 03/01/2017
1 A 03/01/2017 05/01/2017
1 A 04/01/2017 06/01/2017
1 A 09/01/2017 10/01/2017
В настоящее время я делаю следующее
SELECT
A.ID,
A.Type,
B.Start,
A.End
FROM my_data as A
INNER JOIN my_data as B
ON A.ID = B.ID
AND A.start>B.start
AND A.start < B.end
WHERE A.type = B.Type
AND A.end-B.start <=365;
, чтобы получить набор данныхгде, если идентификатор имеет тот же тип, и промежутки между началом / концом не имеют НИКАКИХ промежутков между ними (но они могут перекрываться), первый запуск - это начало, а последний конец - это конец (и они не выходят за пределы года, то есть самого раннего началауже 01.01.2017, но некоторые цели могут наступить в 2018 году, мы хотим остановить их в последний день года).
В настоящее время мы получаем такой набор данных:
ID Type Start End
1 A 01/01/2017 03/01/2017
1 A 02/01/2017 05/01/2017
1 A 04/01/2017 06/01/2017
И я просто повторяю аналогичную логику в новой таблице.Но в реальной жизни это занимает столько раз, что кажется, что должно быть более простое решение.
Таблица, которую я хочу, выглядит примерно так:
ID Type Start End
1 A 01/01/2017 06/01/2017
1 A 09/01/2017 10/01/2017