что должно работать; встроенное представление упорядочено по FTE_TMUSD
в порядке убывания, и вы выбираете значения из него.
То, что выглядит подозрительно - это значения, которые вы указали в качестве результата. Похоже, тип данных FTE_TMUSD
равен VARCHAR2
(ах, да, это так, вы так сказали). Это означает, что значения сортируются как строки, а не числа - и кажется, что вы ожидаете числа . Итак, примените TO_NUMBER
к этому столбцу. Обратите внимание, что произойдет сбой, если в столбце есть что-то, кроме чисел (например, если есть значение 972C
).
Кроме того, альтернативой вашему запросу может быть использование аналитических функций, таких как row_number
:
with temp as
(select f.*,
row_number() over (order by to_number(f.fte_tmusd) desc) rn
from fse_tm_entry f
)
select *
from temp
where rn <= 3;