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
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


0