Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie SQL zwracające dane tylko wtedy, gdy WSZYSTKIE niezbędne kolumny są obecne, a nie NULL

Możesz użyć exists . Myślę, że zamierzasz:

select t.*
from t
where exists (select 1
              from t t2
              where t2.id = t.id and t2.type = 'Purchase' and t2.total is not null
             ) and
      exists (select 1
              from t t2
              where t2.id = t.id and t2.type = 'Exchange' and t2.total is not null
             ) and
      exists (select 1
              from t t2
              where t2.id = t.id and t2.type = 'Return' and t2.total is not null
             );

Istnieją sposoby na „uproszczenie” tego:

select t.*
from t
where 3 = (select count(distinct t2.type)
           from t t2
           where t2.id = t.id and
                 t2.type in ('Purchase', 'Exchange', 'Return') and
                 t2.total is not null
          );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dwa klucze obce do tego samego liczbowego typu danych i odwołują się do dwóch tabel

  2. Domyślny format DATY Oracle

  3. SPRAWDŹ ograniczenie daty urodzenia?

  4. Oracle 11g CREATE VIEW przy użyciu CONNECT BY i wielu tabel

  5. Jak wyświetlić datę w innym formacie w Oracle?