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

SQL заявка за връщане на данни само ако присъстват ВСИЧКИ необходими колони, а не NULL

Можете да използвате exists . Мисля, че възнамерявате:

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
             );

Има начини да "опростите" това:

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. Вземете времето за изпълнение на sql скрипт в oracle sqlplus

  2. Хибернация, идентификатор, оракул, последователност

  3. Извличане и групово събиране от REF CURSOR, върнат от процедура

  4. Литералът за дата '[гггг-мм-дд]' на Oracle винаги ли използва модела гггг-мм-дд?

  5. Създаване на материализиран изглед, който се опреснява на всеки 5 минути