Я пытаюсь создать запрос, который для идентификатора получает дату начала и дату окончания на основе идентификатора и статуса.
У меня есть только три столбца для работы, отсутствуют недостающие даты . Статусы могут go перемещаться вперед и назад, например, от зеленого к желтому и обратно к зеленому. Также существует только один статус в день для каждого идентификатора.
Базовая таблица выглядит так
tblOne
ID |StartDate |Status |
100 |1/01/2020 |green |
100 |2/01/2020 |yellow |
100 |3/01/2020 |yellow |
200 |3/01/2020 |green |
100 |4/01/2020 |Orange |
200 |4/01/2020 |Orange |
100 |5/01/2020 |Orange |
200 |5/01/2020 |Red |
100 |6/01/2020 |Orange |
100 |7/01/2020 |yellow |
100 |8/01/2020 |Orange |
100 |9/01/2020 |Orange |
100 |10/01/2020 |Orange |
100 |11/01/2020 |Orange |
100 |12/01/2020 |Red |
Таблица, которую я хочу создать, будет выглядеть так
tblTwo
ID |StartDate |EndDate |Status |
100 |1/01/2020 |1/01/2020 |Green |
100 |2/01/2020 |3/01/2020 |yellow |
100 |4/01/2020 |6/01/2020 |Orange |
100 |7/01/2020 |7/01/2020 |yellow |
100 |8/01/2020 |11/01/2020 |Orange |
100 |12/01/2020 |12/01/2020 |Red |
200 |3/01/2020 |3/01/2020 |green |
200 |4/01/2020 |4/01/2020 |Orange |
200 |5/01/2020 |5/01/2020 |Red |
Код для создания tblOne
CREATE TABLE tbleOne(ID int, StartDate Date, Status VARCHAR(20))
INSERT INTO tblOne VALUES
(100,'2020-01-01','green'),
(100,'2020-01-02','yellow'),
(100,'2020-01-03','yellow'),
(200,'2020-01-03','green'),
(100,'2020-01-04','Orange'),
(200,'2020-01-05','Orange'),
(100,'2020-01-05','Orange'),
(200,'2020-01-06','Red'),
(100,'2020-01-06','Orange'),
(100,'2020-01-07','yellow'),
(100,'2020-01-08','Orange'),
(100,'2020-01-09','Orange'),
(100,'2020-01-10','Orange'),
(100,'2020-01-11','Orange'),
(100,'2020-01-12','Red')