sql >> Base de Datos >  >> RDS >> PostgreSQL

Seleccionar registros basados ​​en la última fecha

En PostgreSQL, para obtener filas únicas para un conjunto definido de columnas , la técnica preferible es generalmente DISTINCT ON :

SELECT DISTINCT ON ("ID") *
FROM   "Course"
ORDER  BY "ID", "Course Date" DESC NULLS LAST, "Course Name";

Obtienes exactamente una fila por ID de esta manera:el que tenga la última "Course Date" conocida y el primer "Course Name" (según orden de clasificación) en caso de empate en la fecha.

Puede soltar NULLS LAST si su columna está definida NOT NULL .

Para obtener filas únicas por ("ID", "Course Name") :

SELECT DISTINCT ON ("ID", "Course Name") *
FROM   "Course"
ORDER  BY "ID", "Course Name", "Course Date" DESC NULLS LAST;

Detalles en esta respuesta relacionada: