Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle dynamique DESC et ASC dans l'ordre par

Si vous souhaitez également rendre l'ordre de tri (ASC/DESC) dynamique, vous pouvez procéder comme suit :

SELECT ...
Order By CASE WHEN InputParam = 'PRICE' THEN l_so * OFFER_PRICE END,
         CASE WHEN InputParam = 'ENDING SOON' 
              THEN l_so * (SYSDATE - EXPIRY_DATE) END, 
         CASE WHEN InputParam = 'DISCOUNT' THEN l_so * DISC_PERCENTAGE END,
         CASE WHEN InputParam = 'SAVING' THEN l_so * SAVING END

avec une variable l_so qui contient 1 ou -1 selon l'ordre de tri souhaité.