Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak można ulepszyć to zapytanie?

użyj agregatu zamiast podzapytań:

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

Nie wiem, którego RDBMS używasz, więc case when konstrukcja może wymagać modyfikacji do lokalnego dialektu. Ten powinien być poprawny dla MSSQL

AKTUALIZACJA:Moje okulary nie działają prawidłowo, więc nie zauważyłem tagu ORACLE. Żenujące...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę wykonać natywny skrypt SQL w JPA/Hibernacji?

  2. Jak napisać sparametryzowaną kwerendę wstawiania Oracle?

  3. Ustawianie strefy czasowej sesji za pomocą wiosennej wyroczni jdbc

  4. Jak zapisać BLOB jako plik w PL/SQL?

  5. jak utworzyć plik do wgrania w Grails, który działa z Oracle?