PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Scal wiersze postgres i zastąp wartości najnowszymi, jeśli nie są null

Pierwsza group by organization_core_id aby uzyskać identyfikatory wierszy z ostatnimi wartościami niezerowymi dla slug i name a następnie dołącz do stołu:

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

Zobacz demo .
Wyniki:

> 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. Jak używać uuid z typem indeksu postgresql gist?

  2. Wyświetl ostatnie dziecko w iteracji reakcji

  3. Alias ​​odniesienia w klauzuli WHERE

  4. Do czego służą Reguły PostgreSQL?

  5. Symfony/Doctrine:Jak sprawić, by Doctrine działała z gniazdem uniksowym?