我需要平均从创建(a.Date_Create(到完成(s.Date_Status_Finalized(字段所需的时间。
无法计算周末和节假日。
但是,以下查询正在工作,会考虑该期间的每一天。
SELECT AVG(DATEDIFF(HH, a.Date_Create, s.Date_Status_Finalized))
FROM RTRC_Processo p
Left join RTRC_Solucao s on (s.Id_Processo_RTRC = p.Id )
Left Join RTRC_Abertura a on (a.Id_Processo_RTRC = p.Id)
WHERE 1=1
and s.Status ='F'
and YEAR(s.Date_Status_Finalized) = 2019
and MONTH(s.Date_Status_Finalized)= 08
要排除工作日,您需要使用以下查询,我只是找到天数的差异并将其乘以 24 得到小时数 -
SELECT AVG(
(DATEDIFF(DD, a.Date_Create, s.Date_Status_Finalized) -
DATEDIFF(WK, a.Date_Create, s.Date_Status_Finalized) * 2 -
CASE WHEN datepart(dw, @d1) = 1 THEN 1 ELSE 0 END +
CASE WHEN datepart(dw, @d2) = 1 THEN 1 ELSE 0 END
) * 24 )
FROM RTRC_Processo p
Left join RTRC_Solucao s on (s.Id_Processo_RTRC = p.Id )
Left Join RTRC_Abertura a on (a.Id_Processo_RTRC = p.Id)
WHERE 1=1
and s.Status ='F'
and YEAR(s.Date_Status_Finalized) = 2019
and MONTH(s.Date_Status_Finalized)= 08
同样,要排除假期,您需要使用假期表减去在此期间发生的假期数量。