• not sure a better solution but it's a solution

    ;WITH cte AS

    (

    SELECT ROW_NUMBER() OVER ( ORDER BY ResourceID, dt) AS Rno,

    x.ResourceID, x.JobNo, Dt, xdt.Type

    FROM (

    SELECT j.ResourceID, j.JobNo, j.startdate, j.enddate, 'P' AS JType

    FROM #Jobs AS j

    UNION ALL

    SELECT d.ResourceID, d.Reason, d.startdate, d.enddate, 'D' AS Jtype

    FROM #Downtime AS d

    ) AS x

    CROSS APPLY

    (

    VALUES (x.startdate, x.JType), (x.enddate, x.JType)

    ) AS xdt(Dt, Type)

    )

    SELECT x.ResourceID,

    CASE WHEN x.JobNo > x1.JobNo THEN x.JobNo ELSE x1.JobNo END AS Activity,

    x.dt AS StartDate, x1.Dt AS EndDate,

    CASE WHEN x.Type > x1.Type THEN x.Type ELSE x1.type END AS activitytype

    FROM cte AS x

    LEFT OUTER JOIN cte AS x1

    ONx.ResourceID = x1.ResourceID AND x.Rno = x1.Rno - 1

    WHERE x1.Dt IS NOT NULL AND x1.Dt <> x.Dt;

    Every rule in a world of bits and bytes, can be bend or eventually be broken
    MyBlog About Common dialog control
    A Visualizer for viewing SqlCommand object script [/url]