You are viewing a single comment's thread. Return to all comments →
Using Recursion
WITH RECURSIVE CTE1 AS ( SELECT *, ROW_NUMBER() OVER(ORDER BY Start_Date ASC) AS ind FROM PROJECTS ), CTE2 AS ( -- Anchor member: the first row SELECT *, 1 AS taggs, 1 AS Levels FROM CTE1 WHERE ind = 1 UNION ALL -- Recursive member: subsequent rows SELECT CTE1.Task_ID, CTE1.Start_Date, CTE1.End_Date, CTE1.ind, CASE WHEN DATEDIFF(CTE1.Start_Date, CTE2.Start_Date) = 1 THEN CTE2.Levels ELSE CTE2.Levels + 1 END AS taggs, CASE WHEN DATEDIFF(CTE1.Start_Date, CTE2.Start_Date) = 1 THEN CTE2.Levels ELSE CTE2.Levels + 1 END AS Levels FROM CTE1 INNER JOIN CTE2 ON CTE1.ind = CTE2.ind + 1 ), -- Select statement to get the desired columns CTE3 AS ( SELECT Min(Start_Date) as Start_Dte,Max(End_Date) as End_Dte FROM CTE2 Group by Levels Order by Start_Dte) , CTE4 AS ( SELECT *, Row_Number() Over(Order By DATEDIFF(End_Dte,Start_Dte) ASC) AS ORDERR
FROM CTE3
)
SELECT Start_Dte, End_Dte FROM CTE4
Seems like cookies are disabled on this browser, please enable them to open this website
SQL Project Planning
You are viewing a single comment's thread. Return to all comments →
Using Recursion
)
SELECT Start_Dte, End_Dte FROM CTE4