sql >> Databáze >  >> RDS >> Oracle

Jak by se dal tento dotaz vylepšit?

místo dílčích dotazů použijte agregaci:

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

Nevím, které RDBMS používáte, takže case when konstrukt může být nutné upravit na váš místní dialekt. Toto by mělo být platné pro MSSQL

AKTUALIZACE:Moje brýle nefungují správně, a tak jsem si nevšiml štítku ORACLE. Trapné...



  1. Jak získám první nepoužité ID v tabulce?

  2. Aktualizujte stejnou tabulku po vložení triggeru

  3. Vytvoření databáze v cloudových webech

  4. Neplatný typ parametru (numpy.int64) při vkládání řádků pomocí executemany()