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

PostgreSQL:Grupowanie, a następnie filtrowanie tabeli z warunkiem nieistnienia

Użyj CTE, które zwraca wszystkie wiersze, w których A = C i dołącz do stołu:

with cte as (
  select * from tablename
  where "A" = "C"
)  
select distinct t."A", t."B", c."D"
from tablename t left join cte c
on c."A" = t."A" and c."B" = t."B"
order by t."A", t."B"

Zobacz demo .
Wyniki:

| A   | B   | D   |
| --- | --- | --- |
| x   | 0   | 1   |
| x   | 1   |     |
| y   | 0   |     |
| y   | 1   | 0   |


  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 ustawić interwałowy format wyjściowy w PostgreSQL?

  2. PG::Błąd:SELECT DISTINCT, ORDER BY wyrażenia muszą pojawić się na liście wyboru

  3. Czy istnieje konwencja dla nazwanych argumentów w funkcji w PostgreSQL?

  4. Postgres Query Plan, dlaczego szacowanie wierszy jest tak błędne

  5. Dodanie kolumny do tabeli z wartością z następnego wiersza