sql >> Databasteknik >  >> RDS >> Oracle

SQL-fråga för att returnera data endast om ALLA nödvändiga kolumner finns och inte NULL

Du kan använda exists . Jag tror att du tänker:

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

Det finns sätt att "förenkla" detta:

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. Hur uppgraderar jag WordPress och installerade plugins för live-webbplatsen till de senaste tillgängliga versionerna utan att möta några problem?

  2. PHP MySQL hämta platser i radie användarens plats från GPS

  3. XMLAGG med RTRIM-problem

  4. Få oanvända unika värden på en SQL-tabell