Overlapping Perspective Stored Procedure
create procedure dbo.USR_USP_REPORT_PLANSTAGEDURATIONSOVERLAPPING (@PROSPECTPLANTYPECODEID uniqueidentifier)
as
with [STEPS]
as (
select i.[PROSPECTPLANSTATUSCODEID],
i.[ACTUALENDDATETIME],
min(i.[ACTUALSTARTDATETIME]) over (
partition by i.[PROSPECTPLANID],
i.[PROSPECTPLANSTATUSCODEID]
) as [FIRSTSTEPINSTAGEDATETIME],
max(i.[ACTUALENDDATETIME]) over (
partition by i.[PROSPECTPLANID],
i.[PROSPECTPLANSTATUSCODEID]
) as [LASTSTEPINSTAGEDATETIME]
from [INTERACTION] as i
inner join [PROSPECTPLAN] pl on i.[PROSPECTPLANID] = pl.[ID]
where i.[COMPLETED] = 1
and pl.[PROSPECTPLANTYPECODEID] = @PROSPECTPLANTYPECODEID
)
select p.[DESCRIPTION] as [STAGENAME],
avg(cast((s.[LASTSTEPINSTAGEDATETIME] - s.[FIRSTSTEPINSTAGEDATETIME]) as float)) as [AVGSTAGEDURATION],
min(cast((s.[LASTSTEPINSTAGEDATETIME] - s.[FIRSTSTEPINSTAGEDATETIME]) as float)) as [MINSTAGEDURATION],
max(cast((s.[LASTSTEPINSTAGEDATETIME] - s.[FIRSTSTEPINSTAGEDATETIME]) as float)) as [MAXSTAGEDURATION]
from [STEPS] as s
inner join [PROSPECTPLANSTATUSCODE] as p on s.[PROSPECTPLANSTATUSCODEID] = p.[ID]
where (s.[ACTUALENDDATETIME] = s.[LASTSTEPINSTAGEDATETIME])
group by p.[DESCRIPTION]