Seleccionar ultimos registros de cada registro

23/11/2009 - 13:50 por Fran | Informe spam
Buenas tardes

Tengo una select en una base de datos de esta forma:

SELECT IDPaciente, fecha, observaciones FROM dbo.observaciones WHERE
fecha>= CONVERT(datetime, convert(varchar(10), GETDATE() ,120), 120)
ORDER BY fecha DESC"

y una tabla con la siguiente información

IDPaciente Fecha Observaciones
1 14/05/07 observaciones..
1 14/05/07 observaciones 2
2 15/06/07 observaciones
4 16/06/07 ...
3 16/06/07-
2 16/07/09
1 17/07/09

Lo que quiero es que solamente muestre el último registro de cada
paciente, quedando de esta forma

1 17/07/09
2 16/07/09
3 16/06/07
4 16/06/07

cómo podría hacerlo?

Muchas gracias

Preguntas similare

Leer las respuestas

#6 Fran
23/11/2009 - 18:25 | Informe spam
Gracias Carlos, ha funcionado a la perfección

Muchísimas gracias!!

On 23 nov, 17:27, "Carlos Sacristan" wrote:
Claro, pero eso es un nuevo requisito que no indicabas antes. Una solución,
suponiendo que no te importe obtener más de un registro por paciente en el
caso de que la fecha para el mismo se repita, podría ser:

SELECT o.*
FROM dbo.observaciones AS o
    INNER JOIN (SELECT IdPaciente, MAX(Fecha) AS Fecha FROM
dbo.observaciones GROUP BY IdPaciente) AS m ON o.IdPaciente=m.IdPaciente AND
o.Fecha=m.Fecha

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático

"Fran" wrote in message

news:
Hola Carlos.

Con ese metodo si que me lo muestra pero en cuanto en el select le
meto más campos ya me muestra mas registros

On 23 nov, 15:55, "Carlos Sacristan" wrote:



> Agrupando por paciente y preguntando por la mayor fecha de cada uno de
> ellos. Algo como

> SELECT IdPaciente, MAX(Fecha) AS Fecha
> FROM dbo.observaciones
> GROUP BY IdPaciente

> "Caminar sobre el agua y desarrollar software a partir de unas
> especificaciones es fácil, si ambas están congeladas."
> Edward V. Berard, ingeniero informático

> "Fran" wrote in message

>news:
> Buenas tardes

> Tengo una select en una base de datos de esta forma:

> SELECT IDPaciente, fecha, observaciones FROM dbo.observaciones WHERE
> fecha>= CONVERT(datetime, convert(varchar(10), GETDATE() ,120), 120)
> ORDER BY fecha DESC"

> y una tabla con la siguiente información

> IDPaciente Fecha Observaciones
> 1 14/05/07 observaciones..
> 1 14/05/07 observaciones 2
> 2 15/06/07 observaciones
> 4 16/06/07 ...
> 3 16/06/07-
> 2 16/07/09
> 1 17/07/09

> Lo que quiero es que solamente muestre el último registro de cada
> paciente, quedando de esta forma

> 1 17/07/09
> 2 16/07/09
> 3 16/06/07
> 4 16/06/07

> cómo podría hacerlo?

> Muchas gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida