DISTINCT
plus vensterfunctie
Voeg een DISTINCT
toe clausule:
SELECT DISTINCT a
, last_value(b) OVER (PARTITION BY a ORDER BY b
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM (
VALUES
(1, 'do not want this')
,(1, 'just want this')
) sub(a, b);
Meer over DISTINCT
:
Eenvoudiger en sneller met DISTINCT ON
PostgreSQL heeft ook deze uitbreiding van de SQL-standaard:
SELECT DISTINCT ON (a)
a, b
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
ORDER BY a, b DESC;
Meer over DISTINCT ON
en mogelijk snellere alternatieven:
Eenvoudige behuizing met gewoon aggregaat
Als uw geval is eigenlijk net zo eenvoudig als uw demo (en u hebt geen extra kolommen uit die laatste rij nodig), een eenvoudige aggregatiefunctie zal eenvoudiger zijn:
SELECT a, max(b)
FROM (
VALUES
(1, 'do not want this')
, (1, 'just want this')
) sub(a, b)
GROUP BY a;