1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
DECLARE @Planning_Proposal_Temp AS TABLE(object varchar(10), dateFrom datetime2, dateTo datetime2)
INSERT INTO @Planning_Proposal_Temp(object, dateFrom, dateTo )
SELECT *
FROM (VALUES
('A', '2019-11-06 09:00:00', '2019-11-06 09:15:00'),
('A', '2019-11-06 09:05:00', '2019-11-06 09:20:00'),
('A', '2019-11-06 09:10:00', '2019-11-06 09:25:00'),
('A', '2019-11-06 09:15:00', '2019-11-06 09:30:00'),
('A', '2019-11-06 09:20:00', '2019-11-06 09:35:00'),
('A', '2019-11-06 09:25:00', '2019-11-06 09:40:00'),
('A', '2019-11-06 09:30:00', '2019-11-06 09:45:00'),
('A', '2019-11-06 09:35:00', '2019-11-06 09:50:00'),
('A', '2019-11-06 09:40:00', '2019-11-06 09:55:00'),
('A', '2019-11-06 09:45:00', '2019-11-06 10:00:00'),
('B', '2019-11-06 09:05:00', '2019-11-06 09:20:00'),
('B', '2019-11-06 09:10:00', '2019-11-06 09:25:00'),
('B', '2019-11-06 09:15:00', '2019-11-06 09:30:00'),
('B', '2019-11-06 09:35:00', '2019-11-06 09:50:00'),
('B', '2019-11-06 09:40:00', '2019-11-06 09:55:00'),
('B', '2019-11-06 09:45:00', '2019-11-06 10:00:00'),
('B', '2019-11-06 10:00:00', '2019-11-06 10:15:00'),
('B', '2019-11-06 10:05:00', '2019-11-06 10:20:00'),
('B', '2019-11-06 10:10:00', '2019-11-06 10:25:00'),
('B', '2019-11-06 10:15:00', '2019-11-06 10:30:00'),
('C', '2019-11-06 12:00:00', '2019-11-06 12:20:00'),
('C', '2019-11-06 12:40:00', '2019-11-06 13:00:00'),
('C', '2019-11-06 12:45:00', '2019-11-06 13:05:00'),
('C', '2019-11-06 12:50:00', '2019-11-06 13:10:00'),
('C', '2019-11-06 12:55:00', '2019-11-06 13:15:00'),
('C', '2019-11-06 13:00:00', '2019-11-06 13:20:00'),
('C', '2019-11-06 13:05:00', '2019-11-06 13:25:00'),
('C', '2019-11-06 13:10:00', '2019-11-06 13:30:00'),
('C', '2019-11-06 13:15:00', '2019-11-06 13:35:00'),
('C', '2019-11-06 13:20:00', '2019-11-06 13:40:00')
) T(IdObject, StartDate, EndDate)
DECLARE @Tmp AS TABLE(object varchar(10), dateFrom datetime2, dateTo datetime2, FromSuiv datetime2, ToSuiv datetime2, RN bigint)
INSERT INTO @Tmp(object, dateFrom, dateTo,FromSuiv,ToSuiv,RN )
SELECT PPT.object, PPT.DateFrom, PPT.DateTo, PPT2.DateFrom AS FromSuiv, PPT2.DateTo AS ToSuiv, ROW_NUMBER() OVER(PARTITION BY PPT.object ORDER BY PPT.DateFrom) AS RN
FROM @Planning_Proposal_Temp AS PPT
LEFT JOIN @Planning_Proposal_Temp AS PPT2
ON PPT2.object = PPT.object
AND PPT2.dateFrom>= PPT.dateTo
LEFT JOIN @Planning_Proposal_Temp AS PPT3
ON PPT3.object = PPT.object
AND PPT3.dateFrom >= PPT.dateTo
AND PPT3.dateFrom < PPT2.dateFrom
WHERE PPT3.object IS NULL
DECLARE @CTE AS TABLE(object varchar(10), dateFrom datetime2, dateTo datetime2, FromSuiv datetime2, ToSuiv datetime2)
INSERT INTO @CTE(object, dateFrom, dateTo,FromSuiv, ToSuiv)
SELECT object, DateFrom, DateTo, FromSuiv, ToSuiv
FROM @Tmp
WHERE RN = 1
UNION ALL
SELECT tmp.object, tmp.DateFrom, tmp.DateTo, tmp.FromSuiv, tmp.ToSuiv
FROM @CTE cte
INNER JOIN @Tmp tmp
ON tmp.object = cte.object
AND tmp.DateFrom = tmp.FromSuiv
AND tmp.DateTo = cte.ToSuiv
SELECT object, DateFrom, DateTo
FROM @CTE
ORDER BY object, dateFrom |
Partager