Bases de Datos - Desfragmentacion de horario de un empleado de 8am a 8 pm por rango de 1 hora en SQL

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 15 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Desfragmentacion de horario de un empleado de 8am a 8 pm por rango de 1 hora en SQL

Publicado por CHRISTIAN ANTONI (2 intervenciones) el 03/10/2018 22:12:34
Captura

Quisiera saber si hay la posibilidad de hacer un query de tal magnitud eh llegado hast aqui,

Como muestra en la imagen adjuntada, quiero mostrar de un rango de de horas saber si mi lista de medicos cubre con los rangos establecidos.

por ejemplo si tengo un medico que esta desde las 14pm hasta 20pm claramente me muestre con un 1 que esta lleno o un 0 que no.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
use  BI_SpringSalud_ProduccionQV
 
Select
Periodo					=	CONVERT(CHAR(6),Cita.FechaCita,112),
Dia_Cita				=	day(Cita.FechaCita)					,
Mes_Cita				=	month(Cita.FechaCita)				,
Anio_Cita				=	year(Cita.FechaCita)				,
Hora_Inicio_Horario		=	RIGHT(Horario.HoraInicio,7)			,
Hora_Fin_Horario		=	RIGHT(Horario.HoraFin,7)			,
Cita.IdMedico						,
Medico					=	Medico.NombreCompleto			,
Horario.IdEspecialidad				,
Especialidad			=	Especialidad.Nombre					,
Horario.IdConsultorio				,
Consultorio				=	Consultorio.Nombre					,
Descrip_Consultorio		=	Consultorio.Descripcion				,
Ubicacion.IdUbicacion				,
Ubicacion				=	Ubicacion.Nombre					,
Ubicacion_Descripcion	=	Ubicacion.RutaDescripcion			,
Horario.IdTurno,
AtiendeLunes			=	Case when Horario.IndicadorLunes		= 2 Then 'S' Else 'N' End,
		AtiendeMartes			=	Case when Horario.IndicadorMartes		= 2 Then 'S' Else 'N' End,
		AtiendeMiercoles		=	Case when Horario.IndicadorMiercoles	= 2 Then 'S' Else 'N' End,
		AtiendeJueves			=	Case when Horario.IndicadorJueves		= 2 Then 'S' Else 'N' End,
		AtiendeViernes			=	Case when Horario.IndicadorViernes		= 2 Then 'S' Else 'N' End,
		AtiendeSabado			=	Case when Horario.IndicadorSabado		= 2 Then 'S' Else 'N' End,
		AtiendeDomingo			=	Case when Horario.IndicadorDomingo		= 2 Then 'S' Else 'N' End
--into #TMP_Cita
From
SS_CC_Cita  Cita
	INNER JOIN SS_CC_Horario		Horario			ON	Cita.IdHorario			=	Horario.IdHorario
	LEFT JOIN SS_GE_Especialidad	Especialidad	ON	Horario.IdEspecialidad	=	Especialidad.IdEspecialidad
	LEFT JOIN PersonaMast			Medico			ON	Cita.IdMedico			=	Medico.Persona
	LEFT JOIN EmpleadoMast			IdCCostos		ON	Cita.UsuarioCreacion	=	IdCCostos.CodigoUsuario
	LEFT JOIN GE_CentroCostos		CCostos			ON 	IdCCostos.CentroCostos	=	CCostos.CentroCostos
	LEFT JOIN EmpleadoMast			CMP				ON	Medico.Persona			=	CMP.Empleado
	LEFT JOIN PersonaMast			Paciente		ON	Cita.IdPaciente			=	Paciente.Persona
	LEFT JOIN SS_GE_Paciente		HC				ON	Paciente.Persona		=	HC.IdPaciente
	LEFT JOIN SS_GE_Consultorio		Consultorio		ON 	Horario.IdConsultorio	=	Consultorio.IdConsultorio
	LEFT JOIN SS_GE_Turno			Turno			ON  Horario.IdTurno			=	Turno.IdTurno
	LEFT JOIN SS_GE_TipoAtencion	TipoAtencion	ON	Cita.IdTipoAtencion		=	TipoAtencion.IdTipoAtencion
	LEFT JOIN SS_GE_GrupoAtencion	GrupoAtenc		ON	Cita.IdGrupoAtencion	=	GrupoAtenc.IdGrupoAtencion
	LEFT JOIN SS_GE_Servicio		Servicio		ON	Cita.IdServicio			=	Servicio.IdServicio
	LEFT JOIN SS_GE_Ubicacion		Ubicacion		ON	Consultorio.IdUbicacion	=	Ubicacion.IdUbicacion
	LEFT JOIN GE_EstadoDocumento	EstadoCita		ON	Cita.EstadoDocumento	=	EstadoCita.IdEstado AND EstadoCita.IdDocumento=45
where
	Cita.UnidadReplicacion = 'ceg' 	AND
  YEAR(FechaCita)				= 2018  --AND MONTH(FechaCita)= 09 and day(FechaCita) in (24,25,26,27,28,29)
	AND Cita.IdTipoAtencion			=	1
	AND (Cita.IdGrupoAtencion		=	1 or cita.IdGrupoAtencion=2)
--	and Cita.IdMedico='179852'
--    and cita.IdCita = '5436366'
	 AND Cita.Estado					=	2
  -- AND Paciente.NombreCompleto like 'RODRIGUEZ LINARES%'
  -- AND Cita.IdMedico=130577
  -- AND EstadoCita.Descripcion in ( 'ATENDIDO','ATENCION','PENDIENTE')
 --AND HC.IdPaciente = 1185704
 group by CONVERT(CHAR(6),Cita.FechaCita,112)
 ,day(Cita.FechaCita),month(Cita.FechaCita), year(Cita.FechaCita), Horario.IdHorario	, Medico.NombreCompleto,
 RIGHT(Horario.HoraInicio,7), RIGHT(Horario.HoraFin,7), Cita.IdMedico,Medico.NombreCompleto,
Horario.IdEspecialidad, Especialidad.Nombre,
Horario.IdConsultorio, Consultorio.Nombre, Consultorio.Descripcion,
Ubicacion.IdUbicacion, Ubicacion.Nombre, Ubicacion.RutaDescripcion, Horario.IdTurno,
Case when Horario.IndicadorLunes		= 2 Then 'S' Else 'N' End,
Case when Horario.IndicadorMartes		= 2 Then 'S' Else 'N' End,
Case when Horario.IndicadorMiercoles	= 2 Then 'S' Else 'N' End,
Case when Horario.IndicadorJueves		= 2 Then 'S' Else 'N' End,
Case when Horario.IndicadorViernes		= 2 Then 'S' Else 'N' End,
Case when Horario.IndicadorSabado		= 2 Then 'S' Else 'N' End,
Case when Horario.IndicadorDomingo		= 2 Then 'S' Else 'N' End
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vega
Val: 28
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Desfragmentacion de horario de un empleado de 8am a 8 pm por rango de 1 hora en SQL

Publicado por Vega (13 intervenciones) el 26/03/2019 20:12:05
lograste solucionarlo?

tu pregunta es buena pero deberi'as simplificar los datos para que te podamos hacer un ejemplo practico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar