PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Unisci le righe postgres e sostituisci i valori con latest quando non null

Primo group by organization_core_id per ottenere gli ID delle righe con gli ultimi valori non nulli per slug e name e poi unisciti al tavolo:

select
  t.organization_core_id, 
  t1.slug,
  t2.name
from (
  select 
    organization_core_id, 
    max(case when slug is not null then id end) slugid, 
    max(case when name is not null then id end) nameid
  from tablename
  group by organization_core_id
) t 
left join tablename t1 on t1.id = t.slugid
left join tablename t2 on t2.id = t.nameid

Guarda la demo .
Risultati:

> organization_core_id | slug           | name      
> -------------------: | :------------- | :---------
>                    1 | dolphin        | Dolphin v2
>                    2 | sea-horse-club | Sea Horse