You are viewing a single comment's thread. Return to all comments →
Working solution for MySQL:
WITH CTE AS ( SELECT START_DATE ,END_DATE ,CASE WHEN ROW_NUMBER() OVER(ORDER BY END_DATE DESC) = 1 THEN END_DATE WHEN LEAD(END_DATE) OVER(ORDER BY END_DATE ASC)- END_DATE>1 THEN END_DATE ELSE NULL END AS PROJECT_END_DATE ,CASE WHEN ROW_NUMBER() OVER(ORDER BY END_DATE ASC) = 1 THEN START_DATE WHEN START_DATE - LAG(START_DATE) OVER(ORDER BY END_DATE ASC)>1 THEN START_DATE ELSE NULL END AS PROJECT_START_DATE FROM PROJECTS ) ,SUBQ AS ( SELECT START_DATE ,END_DATE ,PROJECT_START_DATE ,PROJECT_END_DATE FROM CTE ) ,CALC AS ( SELECT STRT.PROJECT_START_DATE ,END.PROJECT_END_DATE ,1+END.PROJECT_END_DATE - STRT.PROJECT_START_DATE AS PROJECT_LENGTH FROM ( SELECT x.PROJECT_START_DATE ,ROW_NUMBER() OVER(ORDER BY PROJECT_START_DATE ASC) AS RN__ FROM (SELECT * FROM SUBQ WHERE PROJECT_START_DATE IS NOT NULL) x )STRT INNER JOIN ( SELECT y.PROJECT_END_DATE ,ROW_NUMBER() OVER(ORDER BY PROJECT_END_DATE ASC) AS RN__ FROM (SELECT * FROM SUBQ WHERE PROJECT_END_DATE IS NOT NULL) y )END ON STRT.RN__ = END.RN__ ) SELECT PROJECT_START_DATE, PROJECT_END_DATE FROM CALC ORDER BY PROJECT_LENGTH ASC, PROJECT_START_DATE ASC;
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 →
Working solution for MySQL: