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

Как може да се подобри тази заявка?

използвайте агрегат вместо подзаявки:

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

Не знам коя RDBMS използвате, така че case when конструкцията може да се наложи да бъде модифицирана според вашия местен диалект. Това трябва да е валидно за MSSQL

АКТУАЛИЗАЦИЯ:Очилата ми не работят правилно и затова не забелязах етикета ORACLE. Смущаващо...



  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 комбинира две колони в една променлива

  2. Подреждане на низовете при конкатенация в Oracle

  3. Наследяване в дизайна на бази данни

  4. Как мога да направя пакетно вмъкване в база данни на Oracle с помощта на Python?

  5. Вземете дума след конкретна дума с помощта на regexp_substr в sql oracle