PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Обединете редове postgres и заменете стойностите с най-новите, когато не са null

Първа group by organization_core_id за да получите идентификаторите на редовете с последните ненулеви стойности за slug и name и след това се присъединете към таблицата:

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

Вижте демонстрацията .
Резултати:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да върна динамичния брой колони във функцията?

  2. не може да се свърже с pg базата данни, хоствана на Heroku

  3. Инсталирайте PL/Java 1.5.2 в PostgreSQL 11

  4. Изберете първия запис, ако никой не съвпада

  5. Как мога да създам потребител и база данни на Postgres всеки път, когато създавам ново приложение за релси?