Je dois trier mes données par une colonne, de sorte qu'une valeur spécifique apparaisse en premier. Donc, pour une requête comme ça ...Oracle SQL cas de la commande
SELECT rtrim(taskid) into v_taskid FROM tasks
where
/* some where clausers */
and rownum = 1
... Je l'ai basé sur case when
, mais ce qui me dérange est de trois sélections imbriquées j'ai maintenant:
SELECT rtrim(taskid) into v_taskid FROM tasks where taskid in (
select taskid from (
select taskid,
case when taskuser like '%myuser%'
then 0
else 100
end as ordervalue
FROM tasks
where
/* some where clausers */
order by ordervalue
)
)
and rownum = 1
Je pense que la performance sage ça ne devrait pas poser de problème, mais ça ressemble à un spaghetti ... Y a-t-il un moyen de mettre case-when
dans la clause where
?
Une requête analytique n'est pas nécessaire ici et aura un impact sur les performances. –