none
CONSULTA RRS feed

  • Pregunta

  • Buenas tardes, 

    QUisiera ver si me dan una idea,

    tengo una tabla donde se generan registros, pero mediante ella quiero saber que usuario esta guardando datos y quien no,

    estoy utilizando esta consulta

    select distinct
    	tusi_medico as "MEDICO",
    	tusi_especialidad as "ESPECIALIDAD",
    	CASE 
    		WHEN cast(tusi_fecha_fin as date) = '2015/01/29' THEN 'CONECTADO'
    	END as "ESTADO"
    from 
    tran_turno_sismedico
    WHERE
    cast(tusi_fecha_fin as date) = Cast((select localtimestamp) as date)
    order by tusi_medico 

    con eso obtengo que medico esta conectado el día actual.

    Mi pregunta es, 

    como hacer para ver quien esta desconectado


    Javier

    jueves, 29 de enero de 2015 21:36

Respuestas

  • Vale ahora ya he entendido lo que quieres:

    select distinct
    	tusi_medico as "MEDICO",
    	tusi_especialidad as "ESPECIALIDAD",
    CASE WHEN cast(MAX(tusi_fecha_fin) as date) = Cast((select localtimestamp) as date) THEN 'CONECTADO' ELSE
    	'DESCONECTADO' END as "ESTADO"
    from 
    tran_turno_sismedico
    GROUP BY tusi_medico, tusi_especialidad
    order by tusi_medico 


    jueves, 29 de enero de 2015 23:13

Todas las respuestas

  • Si no te he entendido mal lo que buscas sería algo así:

    select distinct
    	tusi_medico as "MEDICO",
    	tusi_especialidad as "ESPECIALIDAD",
    	'DESCONECTADO' as "ESTADO"
    from 
    tran_turno_sismedico
    WHERE
    cast(tusi_fecha_fin as date) < Cast((select localtimestamp) as date)
    order by tusi_medico 

    jueves, 29 de enero de 2015 21:50
  • Hola,

    Si la tabla sobre la que consultas se llama [tran_turno_sismedico] entiendo que tienes otra tabla donde están los médicos, ¿es verdad mi hipótesis?

    Si tienes otra tabla donde estén los médicos será fácil saber quienes no han registrado datos en un determinado día.

    Una duda, el filtro que haces en la clausula WHERE ¿qué sentido tiene?

    Te agradeceré me des un poco mas de detalle para poder ayudarte.

    jueves, 29 de enero de 2015 21:51
  • es verdad Williams, el filtro no tiene sentido

    y sobre el resto tu dices que haga un inner join con la tabla de los usuarios?


    Javier

    jueves, 29 de enero de 2015 22:20
  • gracias Asier, pero con tu modificación solo salen desconectados todos

    Javier

    jueves, 29 de enero de 2015 22:20
  • Hola,

    Claro, si tienes una tabla de usuarios puedes lograr tu cometido. Puedes hacer lo siguiente.

    select
      a.idUsuario,
      max(a.NombreUsuario)
    from
      Usuarios a
    where
      not exists (select 1 from tran_turno_sismedico where (idUsuario = a.idUsuario) and (convert(date, tusi_fecha_fin) = '20150129')
    group by
      a.idUsuario

    Estoy inventando nombre de tablas y campos porque no me permites mayor información, pero espero que la idea quede.

    Coméntame como te fue.

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú

    jueves, 29 de enero de 2015 22:30
  • exactamente me salen todos los usuarios pero yo necesito QUE ME SALGA QUIEN SE CONECTO Y QUIEN NO.

    CON TU AYUDA ME SALEN SOLO LOS QUE HAN CREADO UN REGISTRO


    Javier

    jueves, 29 de enero de 2015 22:51
  • select distinct
    	tusi_medico as "MEDICO",
    	tusi_especialidad as "ESPECIALIDAD",
    CASE WHEN cast(tusi_fecha_fin as date) = Cast((select localtimestamp) as date) THEN 'CONECTADO' ELSE
    	'DESCONECTADO' as "ESTADO"
    from 
    tran_turno_sismedico
    order by tusi_medico 

    jueves, 29 de enero de 2015 22:54
  • Hola,

    select
      a.idUsuario,
      case
        when b.idTran_turno_sismedico is not null then ' REGISTRO'
        else 'NO REGISTRO'
      end
    from
      Usuarios a
      left join tran_turno_sismedico b on (idUsuario = a.idUsuario) 
    where
      (b.convert(date, tusi_fecha_fin) = '20150129')
    group by
      a.idUsuario

    Por favor, evita las palabras en mayúscula.

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú

    jueves, 29 de enero de 2015 22:56
  • gracias por responder, lo que me indicas ya lo hice antes y me sale asi

    el problema es que se duplican y me imagino ya te debes de dar cuenta, que si no cumple la condicion pone desconectado a todos los usuarios


    Javier

    jueves, 29 de enero de 2015 23:07
  • disculpas por las mayúsculas,

    con respecto al problemita, tu ayuda me da resultado igualmente solo los que registraron y los que no registraron, siguen sin aparecer


    Javier

    jueves, 29 de enero de 2015 23:10
  • Vale ahora ya he entendido lo que quieres:

    select distinct
    	tusi_medico as "MEDICO",
    	tusi_especialidad as "ESPECIALIDAD",
    CASE WHEN cast(MAX(tusi_fecha_fin) as date) = Cast((select localtimestamp) as date) THEN 'CONECTADO' ELSE
    	'DESCONECTADO' END as "ESTADO"
    from 
    tran_turno_sismedico
    GROUP BY tusi_medico, tusi_especialidad
    order by tusi_medico 


    jueves, 29 de enero de 2015 23:13
  • Muchas gracias Asier,

    Solo faltó agregar el "END" y el resto exactamente lo que necesitaba.

    Gracias por compartir vuestra experiencia.


    Javier

    jueves, 29 de enero de 2015 23:21
  • Cierto, un despiste. Edito el código para dejar la respuesta correcta.
    jueves, 29 de enero de 2015 23:24