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: