none
Ayuda con consulta sql server 2008 RRS feed

  • Pregunta

  • Hola a todos

    Quisiera una ayuda con una consulta en sql server 2008 que me tiene loco.

    Tengo una tabla llamada FichaHistorica la cual la utilizo para guardar el historial de un paciente, contiene varias filas por cada paciente y a través de una consulta obtengo el registro con la ultima fecha de modificacion y diferenciada por el campo Motivo consulta.

    Por ejemplo guardo esto:

    Fecha_atencion    Motivo_consulta   Paciente

    10/12/2015         dolor                       1

    11/12/2015         dolor                       1

    11/12/2015         fractura                   2

    12/12/2015         fractura                   2

    13/12/2015         dolor                       1

    Y quiero obtener esto:

    Fecha_atencion    Motivo_consulta   Paciente

    12/12/2015         fractura                   2

    13/12/2015         dolor                       1

    Lo que me esta sucediendo es que la consulta no me trae registros de ciertos pacientes, lo cual lo encuentro muy raro ya que es como si lo hiciera al azar.

    Revisando la consulta, creo que el problema lo tengo en el filtro WHERE donde pregunto por la fecha máxima y el motivo de consulta que no se repita.

    Mi tabla es la siguiente:

    parte del procedimiento almacenado para probar la consulta:

    select distinct FichaHistorica.Fecha_atencion,FichaHistorica.Consulta,FichaHistorica.Observaciones,FichaHistorica.Examen_fisico,FichaHistorica.Anamnesis,FichaHistorica.Indicaciones,FichaHistorica.Motivo_consulta,FichaHistorica.Historia_clinica,FichaHistorica.Diagnostico,Beneficiario.Id_beneficiario
    From Beneficiario 
    inner join FichaHistorica on Beneficiario.Rut_beneficiario = FichaHistorica.Rut_beneficiario
    where Id_Beneficiario = (acá ingreso el id) and
    Fecha_atencion = (SELECT MAX(Fecha_atencion) FROM FichaHistorica FH2 WHERE FichaHistorica.Motivo_consulta = FH2.Motivo_consulta)

    De que otra manera se podría realizar la busqueda por fecha maxima y motivo consulta?


    • Editado n4n2 jueves, 24 de diciembre de 2015 4:50 modifique informacion
    jueves, 24 de diciembre de 2015 4:50

Respuestas

  • Hola n4n2,

    La subconsulta debería filtrar también por el número de RUT.

    SELECT 
    	DISTINCT 
    	FichaHistorica.Fecha_atencion,
    	FichaHistorica.Consulta,
    	FichaHistorica.Observaciones,
    	FichaHistorica.Examen_fisico,
    	FichaHistorica.Anamnesis,
    	FichaHistorica.Indicaciones,
    	FichaHistorica.Motivo_consulta,
    	FichaHistorica.Historia_clinica,
    	FichaHistorica.Diagnostico,
    	Beneficiario.Id_beneficiario
    FROM 
    	Beneficiario 
    	INNER JOIN FichaHistorica ON (Beneficiario.Rut_beneficiario = FichaHistorica.Rut_beneficiario)
    WHERE 
    	Id_Beneficiario = (acá ingreso el id) 
    	AND Fecha_atencion = (SELECT MAX(Fecha_atencion) FROM FichaHistorica FH2 WHERE (FichaHistorica.Motivo_consulta = FH2.Motivo_consulta) AND (FichaHistorica.Rut_beneficiario = FH2.Rut_beneficiario))

    • Marcado como respuesta n4n2 jueves, 24 de diciembre de 2015 19:33
    jueves, 24 de diciembre de 2015 6:02

Todas las respuestas

  • Hola n4n2,

    La subconsulta debería filtrar también por el número de RUT.

    SELECT 
    	DISTINCT 
    	FichaHistorica.Fecha_atencion,
    	FichaHistorica.Consulta,
    	FichaHistorica.Observaciones,
    	FichaHistorica.Examen_fisico,
    	FichaHistorica.Anamnesis,
    	FichaHistorica.Indicaciones,
    	FichaHistorica.Motivo_consulta,
    	FichaHistorica.Historia_clinica,
    	FichaHistorica.Diagnostico,
    	Beneficiario.Id_beneficiario
    FROM 
    	Beneficiario 
    	INNER JOIN FichaHistorica ON (Beneficiario.Rut_beneficiario = FichaHistorica.Rut_beneficiario)
    WHERE 
    	Id_Beneficiario = (acá ingreso el id) 
    	AND Fecha_atencion = (SELECT MAX(Fecha_atencion) FROM FichaHistorica FH2 WHERE (FichaHistorica.Motivo_consulta = FH2.Motivo_consulta) AND (FichaHistorica.Rut_beneficiario = FH2.Rut_beneficiario))

    • Marcado como respuesta n4n2 jueves, 24 de diciembre de 2015 19:33
    jueves, 24 de diciembre de 2015 6:02
  • Muchas gracias Williams, me salvaste la navidad jo jo jooo

    Saludos cordiales!

    jueves, 24 de diciembre de 2015 14:43