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

Làm thế nào để truy vấn này có thể được cải thiện?

sử dụng tổng hợp thay vì truy vấn con:

select distinct controlid, 
  max (case when a=3 and b=13 and c=0 and d= 0 then OrderNo end) as colA,
  max (case when a=2                           then OrderNo end) as colB,
  max (case when a=1 and b=14 and e=1          then OrderNo end) as colC,
  max (case when a=3 and b=13 and e=1 and c=0 and d=0 then OrderNo end) as colD,
  max (case when OrderNo=#param2# then a end) as colE
from my_table
where controlid = #param1#
group by controlid

Tôi không biết bạn sử dụng RDBMS nào, vì vậy trường hợp case when cấu trúc có thể phải được sửa đổi thành phương ngữ địa phương của bạn. Cái này phải hợp lệ cho MSSQL

CẬP NHẬT:Kính của tôi không hoạt động bình thường và vì vậy tôi không nhận thấy thẻ ORACLE. Đang bắt đầu ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bạn có thể sử dụng Microsoft Entity Framework với Oracle không?

  2. triển khai ứng dụng với nhà cung cấp OraOLEDB

  3. Truy vấn đệ quy đơn giản trong Oracle

  4. SQL thanh lịch hơn?

  5. Lỗi khi tạo phần thân gói Oracle