oracle - 尝试在 oracle 11g..column 中使用 sql 查询显示表中的前 3 个数量是 varchar 类型
问题描述
我试图根据存储在FTE_TMUSD
varchar 数据类型的列中的一些数量从表中列出前 3 条记录
以下是我尝试过的查询
SELECT *FROM
(
SELECT * FROM FSE_TM_ENTRY
ORDER BY FTE_TMUSD desc
)
WHERE rownum <= 3
ORDER BY FTE_TMUSD DESC ;
o/pi 得到
972,9680,963
--> 未在 desc 中显示的 FTE_TMUSD 值
我期待一个 o/p 将显示值的前 3 条记录
解决方案
那应该行得通;内联视图按FTE_TMUSD
降序排列,您从中选择值。
看起来可疑的是您指定为结果的值。看起来FTE_TMUSD
's 的数据类型是VARCHAR2
(啊,是的 - 是的,你这么说)。这意味着值被排序为字符串,而不是数字 - 而且您似乎期望numbers。因此,适用TO_NUMBER
于该列。972C
请注意,如果 column 包含除数字以外的任何内容(例如,如果存在 value ),它将失败。
此外,您的查询的替代方法可能是使用分析函数,例如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;
推荐阅读
- android-studio - Android Studio 中新 Flutter 项目中未解决的引用
- c# - C# 字体不会改变,但字体大小会改变
- r - 用其他数据框替换值作为参考
- haskell - 卡在“可配置”的haskell类中
- django - (DJANGO) NoReverseMatch 在后/
- macos - 如何更改 NSButton 复选框的颜色?
- c++ - 对于接口类,C++ 核心准则 C35“基类析构函数应该是公共的和虚拟的,或者受保护的和非虚拟的”是否错误?
- php - PHP 不应该等待第一个命令;在 sleep() 之前,这是如何完成的?
- python - 将包含元组的 pandas 列转换为字符串
- javascript - 在 iframe 中运行 Javascript 命令