PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Selecionar registros com base na última data


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: