No PostgreSQL, para obter linhas exclusivas para um conjunto definido de colunas , a técnica preferencial geralmente é
DISTINCT ON
:SELECT DISTINCT ON ("ID") *
FROM "Course"
ORDER BY "ID", "Course Date" DESC NULLS LAST, "Course Name";
Você obtém exatamente uma linha por
ID desta forma - aquele com a "Course Date" mais recente conhecida e o primeiro "Course Name" (de acordo com a ordem de classificação) em caso de empate na data. Você pode soltar
NULLS LAST se sua coluna estiver definida NOT NULL . Para obter linhas exclusivas por
("ID", "Course Name") :SELECT DISTINCT ON ("ID", "Course Name") *
FROM "Course"
ORDER BY "ID", "Course Name", "Course Date" DESC NULLS LAST;
Detalhes nesta resposta relacionada: