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: