Отслеживать участки незаполненных периодов.
Интервалы и счетчики, с агрегатными и оконными функциями.
Интервалы и счетчики, все части.
Выяснение сущности вопроса:
Либо собирать динамический запрос, либо использовать
PIVOT.
Если строить динамический запрос, то сначала посчитайте сколько будет периодов-столбцов. Первые столбы - выбрать уникальные, столбцы-периоды из псевдонимов с соответствующими фильтрами.
Но если буквально:
Нужно чтобы запрос сам собирал в одну строку по каждому заказчику данные.
DECLARE @T TABLE ( ID INT, [Name] VARCHAR(50), [Begin] DATE, [End] DATE)
INSERT @T VALUES ( 234, 'SOKOL', '01.02.2020', '08.02.2020' ),
(145, 'EVA', '03.02.2020', '06.02.2020'),
(145, 'EVA', '16.02.2020', '20.02.2020')
SELECT ID, [Name],
STRING_AGG( CONVERT(VARCHAR, [Begin], 104) + '~' +
CONVERT(VARCHAR, [End], 104), ', ')
WITHIN GROUP (ORDER BY [Begin] ) AS [Orders]
FROM @T
GROUP BY ID, [Name]