SQL Project Planning

  • + 0 comments

    WITH LaggedProjects AS ( SELECT Task_ID, Start_Date, End_Date, LAG(End_Date) OVER (ORDER BY End_Date) AS Prev_End_Date FROM Projects ), ProjectGroups AS ( SELECT Task_ID, Start_Date, End_Date, SUM(CASE WHEN Prev_End_Date = Start_Date THEN 0 ELSE 1 END) OVER (ORDER BY End_Date) AS Project_ID FROM LaggedProjects ), ProjectDurations AS ( SELECT Project_ID, MIN(Start_Date) AS Project_Start, MAX(End_Date) AS Project_End, DATEDIFF(day, MIN(Start_Date),MAX(End_Date)) AS Duration FROM ProjectGroups GROUP BY Project_ID ) SELECT Project_Start, Project_End FROM ProjectDurations ORDER BY Duration ASC, Project_Start ASC;