Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn SQL để trả về dữ liệu chỉ khi TẤT CẢ các cột cần thiết đều có mặt và không phải là NULL

Bạn có thể sử dụng exists . Tôi nghĩ bạn dự định:

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

Có nhiều cách để "đơn giản hóa" điều này:

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. Ví dụ về Thu thập số lượng lớn Oracle PL / SQL với Lưu ngoại lệ

  2. Phân tích cú pháp chuỗi XML được lưu trữ trên Bảng Oracle

  3. SQL - Tạo liên kết giữa các trường (Mối quan hệ bắc cầu)

  4. Lời khuyên khi sử dụng Pivot Table trong Oracle

  5. Tại sao ghi nhật ký lỗi dml bị bỏ qua trong câu lệnh song song