select x.ФИО,min(x.datefrom) as dfrom,x.datetill
from (
SELECT фиодата.ФИО
, min(фиодата_2.Дата_Начала) as datefrom
, max(фиодата_1.Дата_Окончания) as datetill
FROM (фиодата LEFT JOIN фиодата AS фиодата_1 ON фиодата.ФИО = фиодата_1.ФИО
AND фиодата.Дата_Окончания >= фиодата_1.Дата_Начала
AND фиодата_1.Дата_Окончания>=фиодата.Дата_Начала)
LEFT JOIN фиодата AS фиодата_2 ON фиодата.ФИО = фиодата_2.ФИО
AND фиодата.Дата_Начала <= фиодата_2.Дата_Окончания
AND фиодата_2.Дата_Начала<=фиодата.Дата_Окончания
group by фиодата.ФИО, фиодата.Дата_Начала) as x
group by x.ФИО,x.datetill
|