sql >> Databasteknik >  >> RDS >> PostgreSQL

Slå samman rader postgres och ersätt värden med senaste när de inte är null

Första group by organization_core_id för att få ID:t för raderna med de sista inte null-värdena för slug och name och gå sedan med i bordet:

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

Se demon .
Resultat:

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



  1. Infoga en tidsstämpel i databasen via ContentValues

  2. Vilket är det mest rekommenderade sättet att lagra tid i PostgreSQL med Java?

  3. JSON Sök i laravel vältalig

  4. Generera slumpmässiga int-värden från 3 till 6