sql >> Database >  >> RDS >> Oracle

Hoe kan deze zoekopdracht worden verbeterd?

gebruik een aggregaat in plaats van subquery's:

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

Ik weet niet welk RDBMS je gebruikt, dus de case when constructie moet mogelijk worden aangepast aan uw lokale dialect. Deze zou geldig moeten zijn voor MSSQL

UPDATE:Mijn bril werkt niet goed en dus heb ik de ORACLE-tag niet opgemerkt. Beschamend...



  1. Bool-waarde instellen in SQL

  2. Hoe rij/kolom met mysql-gegevens in array op te slaan?

  3. Wat doet een professionele workflow die een database maakt met Hibernate in Eclipse?

  4. Sorteer lijst met tuples rekening houdend met locale (Zweedse volgorde)