Я должен отсортировать данные по некоторому столбцу, так что сначала должно появиться определенное значение. Так что для такого запроса ...
SELECT rtrim(taskid) into v_taskid FROM tasks
where
/* some where clausers */
and rownum = 1
... Я основал его на case when
, но меня беспокоит то, что у меня есть три вложенных выбора:
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
С точки зрения производительности, я думаю, это не должно быть проблемой, но это выглядит как спагетти ... Есть ли способ поместить case-when
в предложение where
?