sql >> Databáze >  >> RDS >> PostgreSQL

Sloučit řádky postgres a nahradit hodnoty nejnovějšími, když nejsou null

První group by organization_core_id získat ID řádků s posledními nenulovými hodnotami pro slug a name a poté se připojte ke stolu:

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

Podívejte se na ukázku .
Výsledky:

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



  1. Jednoduchý skript Ajax Jquery – Jak mohu získat informace pro každý z řádků v tabulce?

  2. COUNT(id) vs. COUNT(*) v MySQL

  3. Cizí klíče musí být index v mySQL?

  4. Mariadb Docker-compose nelze po změně restartovat (kód ukončení 1)