SQL Project Planning

  • + 0 comments

    WITH project_groups AS ( SELECT Task_ID, Start_Date, End_Date, SUM(is_new_project) OVER (ORDER BY Start_Date) AS project_id FROM (SELECT p.*, CASE WHEN LAG(End_Date) OVER (ORDER BY Start_Date) = Start_Date THEN 0 ELSE 1 END AS is_new_project FROM Projects p ) t ) SELECT MIN(Start_Date) AS project_start, MAX(End_Date) AS project_end FROM project_groups GROUP BY project_id ORDER BY DATEDIFF(MAX(End_Date), MIN(Start_Date)), MIN(Start_Date);