ALTER PROCEDURE [dbo].[ind_tiempoMedioFallas]

		@p_sucursal as INT = 0,
		@p_tercero as INT = 0,			
		@p_catalogo_equipo as INT=0,
		@p_eid varchar(100)
AS
BEGIN

--PRIMER SELECT

Select
		--view_equ_equipo.id
		'Sin Periodo' as periodo
		,isNull(case when
		(datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))<0
		then 1
		else ((datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))/count(t0.id_documento))/24 end,0) as valor
		,view_equ_equipo.equipo_serial as serie1
		
		
		--Para validación interna
		--,datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE()) as HorasActivo--diferencia en días desde la fecha de "activación" al día de hoy
		--,sum(t0.TTR_Horas) as tiempoReparacion --Tiempo total de reparación del equipo 
		--,count(t0.id_documento) as #OTs-- numero de OTs para ese equipo

		from
		view_equ_equipo 
		left join
				(select
					[view_doc_documento_ot].[doc_documento_ot_fecha_fh] as Fecha_OT
					,[view_doc_documento_ot].[id_equipo]
					,[view_doc_documento_ot].[equ_equipo_equipo_serial] as Serial
					,[view_doc_documento_ot].id as id_documento
					,[view_doc_documento_ot].[doc_documento_ot_prefijo] as Prefijo
					,[view_doc_documento_ot].[doc_documento_ot_documento_numero] as Numero

					--FECHA INICIO DE PARO
					,[dbo].[f_fecha_estado]([view_doc_documento_ot].id) as OT_Inicio_Reporte


					--FECHA FIN DE PARO
					,[dbo].[f_fecha_estado2]([view_doc_documento_ot].id) as OT_Fin_Reporte

					--TIEMPO TECNICO DE REPARACIÓN EN HORAS--------
					,(datediff(MINUTE,[dbo].[f_fecha_estado]([view_doc_documento_ot].id),[dbo].[f_fecha_estado2]([view_doc_documento_ot].id))/60.0) as TTR_Horas
			
					--ID documento siguiente
					,[dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo) as ID_siguiente

					--FECHA INICIO SIGUIENTE PARO
					,case 
						when [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo)) is null then convert(smalldatetime,getdate(),103)
						else [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo))
					end as Siguiente_OT_Aprobada
			
					--TIEMPO DE BUEN FUNCIONAMIENTO EN HORAS--------

					,(datediff(MINUTE,[dbo].[f_fecha_estado2]([view_doc_documento_ot].id),case 
						when [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo)) is null then convert(smalldatetime,getdate(),103)
						else [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo))
					end)/60.0) as TBF_Horas

					from
					[view_doc_documento_ot]

					where
					[view_doc_documento_ot].id_equipo>0
					and [view_doc_documento_ot].id_tipoServicio = 3
					--and  (@p_fecha_fh is null or convert(smalldatetime,[view_doc_documento_ot].[doc_documento_ot_fecha_fh],103) >= @p_fecha_fh)
					--and (@p_fecha_fh_b is null or convert(smalldatetime,[view_doc_documento_ot].[doc_documento_ot_fecha_fh],103) <= @p_fecha_fh_b)
					--and (@p_id=0 or [view_doc_documento_ot].id_equipo=@p_id)
					) t0 on view_equ_equipo.id=t0.id_equipo
		where
		view_equ_equipo.equ_estadoEquipo_activo=1
		and datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())>0
		and t0.TTR_Horas>0
		and (@p_tercero=0 or view_equ_equipo.id_tercero=@p_tercero)
		and (@p_sucursal=0 or view_equ_equipo.id_sucursal=@p_sucursal)
		and (@p_catalogo_equipo=0 or view_equ_equipo.[id_catalogo.equipo]=@p_catalogo_equipo)

		group by 
		view_equ_equipo.id, view_equ_equipo.equipo_serial, view_equ_equipo.fechaPuestaMarcha_fh

		order by 
		isNull(case when
		(datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas)) < 0
		then 1
		else ((datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))/count(t0.id_documento))/24 end,0) desc


-- SEGUNDO SELECT

		Select
		--view_equ_equipo.id
		isNull(case when
		(datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))<0
		then 1
		else ((datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))/count(t0.id_documento))/24 end,0) as valor
		,view_equ_equipo.equipo_serial as serie1
		
		
		--Para validación interna
		--,datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE()) as HorasActivo--diferencia en días desde la fecha de "activación" al día de hoy
		--,sum(t0.TTR_Horas) as tiempoReparacion --Tiempo total de reparación del equipo 
		--,count(t0.id_documento) as #OTs-- numero de OTs para ese equipo

		from
		view_equ_equipo 
		left join
				(select
					[view_doc_documento_ot].[doc_documento_ot_fecha_fh] as Fecha_OT
					,[view_doc_documento_ot].[id_equipo]
					,[view_doc_documento_ot].[equ_equipo_equipo_serial] as Serial
					,[view_doc_documento_ot].id as id_documento
					,[view_doc_documento_ot].[doc_documento_ot_prefijo] as Prefijo
					,[view_doc_documento_ot].[doc_documento_ot_documento_numero] as Numero

					--FECHA INICIO DE PARO
					,[dbo].[f_fecha_estado]([view_doc_documento_ot].id) as OT_Inicio_Reporte


					--FECHA FIN DE PARO
					,[dbo].[f_fecha_estado2]([view_doc_documento_ot].id) as OT_Fin_Reporte

					--TIEMPO TECNICO DE REPARACIÓN EN HORAS--------
					,(datediff(MINUTE,[dbo].[f_fecha_estado]([view_doc_documento_ot].id),[dbo].[f_fecha_estado2]([view_doc_documento_ot].id))/60.0) as TTR_Horas
			
					--ID documento siguiente
					,[dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo) as ID_siguiente

					--FECHA INICIO SIGUIENTE PARO
					,case 
						when [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo)) is null then convert(smalldatetime,getdate(),103)
						else [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo))
					end as Siguiente_OT_Aprobada
			
					--TIEMPO DE BUEN FUNCIONAMIENTO EN HORAS--------

					,(datediff(MINUTE,[dbo].[f_fecha_estado2]([view_doc_documento_ot].id),case 
						when [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo)) is null then convert(smalldatetime,getdate(),103)
						else [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo))
					end)/60.0) as TBF_Horas

					from
					[view_doc_documento_ot]

					where
					[view_doc_documento_ot].id_equipo>0
					and [view_doc_documento_ot].id_tipoServicio = 3
					--and  (@p_fecha_fh is null or convert(smalldatetime,[view_doc_documento_ot].[doc_documento_ot_fecha_fh],103) >= @p_fecha_fh)
					--and (@p_fecha_fh_b is null or convert(smalldatetime,[view_doc_documento_ot].[doc_documento_ot_fecha_fh],103) <= @p_fecha_fh_b)
					--and (@p_id=0 or [view_doc_documento_ot].id_equipo=@p_id)
					) t0 on view_equ_equipo.id=t0.id_equipo
		where
		view_equ_equipo.equ_estadoEquipo_activo=1
		and datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())>0
		and t0.TTR_Horas>0
		and (@p_tercero=0 or view_equ_equipo.id_tercero=@p_tercero)
		and (@p_sucursal=0 or view_equ_equipo.id_sucursal=@p_sucursal)
		and (@p_catalogo_equipo=0 or view_equ_equipo.[id_catalogo.equipo]=@p_catalogo_equipo)

		group by 
		view_equ_equipo.id, view_equ_equipo.equipo_serial, view_equ_equipo.fechaPuestaMarcha_fh

		order by 
		isNull(case when
		(datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas)) < 0
		then 1
		else ((datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))/count(t0.id_documento))/24 end,0) desc

-- TERCER SELECT

Select
sum(t1.dias)/count(t1.equipos) as total
from
	(Select
		--view_equ_equipo.id
		isNull(case when
		(datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))<0
		then 1
		else ((datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE())-sum(t0.TTR_Horas))/count(t0.id_documento))/24 end,0) as dias
		,view_equ_equipo.id as equipos
		
		--Para validación interna
		--,datediff(HOUR,view_equ_equipo.fechaPuestaMarcha_fh,GETDATE()) as HorasActivo--diferencia en días desde la fecha de "activación" al día de hoy
		--,sum(t0.TTR_Horas) as tiempoReparacion --Tiempo total de reparación del equipo 
		--,count(t0.id_documento) as #OTs-- numero de OTs para ese equipo

		from
		view_equ_equipo 
		left join
				(select
					[view_doc_documento_ot].[doc_documento_ot_fecha_fh] as Fecha_OT
					,[view_doc_documento_ot].[id_equipo]
					,[view_doc_documento_ot].[equ_equipo_equipo_serial] as Serial
					,[view_doc_documento_ot].id as id_documento
					,[view_doc_documento_ot].[doc_documento_ot_prefijo] as Prefijo
					,[view_doc_documento_ot].[doc_documento_ot_documento_numero] as Numero

					--FECHA INICIO DE PARO
					,[dbo].[f_fecha_estado]([view_doc_documento_ot].id) as OT_Inicio_Reporte


					--FECHA FIN DE PARO
					,[dbo].[f_fecha_estado2]([view_doc_documento_ot].id) as OT_Fin_Reporte

					--TIEMPO TECNICO DE REPARACIÓN EN HORAS--------
					,(datediff(MINUTE,[dbo].[f_fecha_estado]([view_doc_documento_ot].id),[dbo].[f_fecha_estado2]([view_doc_documento_ot].id))/60.0) as TTR_Horas
			
					--ID documento siguiente
					,[dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo) as ID_siguiente

					--FECHA INICIO SIGUIENTE PARO
					,case 
						when [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo)) is null then convert(smalldatetime,getdate(),103)
						else [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo))
					end as Siguiente_OT_Aprobada
			
					--TIEMPO DE BUEN FUNCIONAMIENTO EN HORAS--------

					,(datediff(MINUTE,[dbo].[f_fecha_estado2]([view_doc_documento_ot].id),case 
						when [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo)) is null then convert(smalldatetime,getdate(),103)
						else [dbo].[f_fecha_estado]([dbo].[f_documento_siguiente]([view_doc_documento_ot].[doc_documento_ot_fecha_fh],[view_doc_documento_ot].id_equipo))
					end)/60.0) as TBF_Horas

					from
					[view_doc_documento_ot]

					where
					[view_doc_documento_ot].id_equipo>0
					and [view_doc_documento_ot].id_tipoServicio = 3
					) t0 on view_equ_equipo.id=t0.id_equipo
		where
		view_equ_equipo.equ_estadoEquipo_activo=1
		and (@p_tercero=0 or view_equ_equipo.id_tercero=@p_tercero)
		and (@p_sucursal=0 or view_equ_equipo.id_sucursal=@p_sucursal)
		and (@p_catalogo_equipo=0 or view_equ_equipo.[id_catalogo.equipo]=@p_catalogo_equipo)

		group by 
		view_equ_equipo.id, view_equ_equipo.equipo_serial, view_equ_equipo.fechaPuestaMarcha_fh) as t1
where t1.dias>0

END



