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

Flet rækker postgres og erstat værdier med seneste, når de ikke er null

Første group by organization_core_id for at få id'erne for rækkerne med de sidste ikke-null-værdier for slug og name og kom derefter til 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 demoen .
Resultater:

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


  1. PostgreSQL VIS TABELLER Ækvivalent (psql)

  2. bruge try/undtagen med psycopg2 eller med closing?

  3. Spil! Framework 1.2.4 --- C3P0-indstillinger for at undgå kommunikationsforbindelsesfejl forårsager inaktiv tid

  4. Hvad betyder disse Kopier kun sikkerhedskopiering?