SELECT
MAX(id) id,
po_nbr
FROM
temp
GROUP BY
po_nbr
Pour avoir la date associée, vous pourriez faire (attention, cela implique un identifiant séquentiel) :
SELECT
temp.id,
temp.po_nbr,
temp.crt_ts
FROM
temp
INNER JOIN (
SELECT MAX(id) id FROM temp GROUP BY po_nbr
) latest ON latest.id = temp.id
Sans identifiant séquentiel, ce serait :
SELECT
MAX(temp.id) id,
temp.po_nbr,
temp.crt_ts
FROM
temp INNER JOIN (
SELECT MAX(crt_ts) crt_ts, po_nbr
FROM temp i
GROUP BY po_nbr
) latest ON latest.crt_ts = temp.crt_ts AND latest.po_nbr = temp.po_nbr
GROUP BY
temp.po_nbr,
temp.crt_ts
Le GROUP BY
peut être omis s'il est garanti qu'il n'y aura pas deux dates égales par po_nbr
groupe.
Index sur crt_ts
et po_nbr
help dans la dernière requête, il serait préférable de créer un index combiné.