我有这个查询:
select (quarter_1 + quarter_2 + quarter_3 + quarter_4) as total
from budget where as_of_dt < to_date('2016-06-28', 'yyyy-MM-dd')
order by as_of_dt desc;
Run Code Online (Sandbox Code Playgroud)
它返回一堆数字,例如:
我的要求是始终捕获第一个数字,因此当我尝试这样做时:
select * from (
select (quarter_1 + quarter_2 + quarter_3 + quarter_4) as total
from budget where as_of_dt < to_date('2016-05-16', 'yyyy-MM-dd')
order by as_of_dt desc
) WHERE ROWNUM = 1
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:
这就是为什么我对此感到困惑,为什么我得到的是第二行而不是第一行?我在这里做错了什么?
更新在第一次查询的结果中包含 as_of_dt:
答案就在那里,在数据中。(我假设时间部分00:00:00
在所有这些中):
该order by
有联系。没有一个“第一行”,而是其中的 3 个。
因此,当第二个查询将结果限制为一行时,会任意选择 3 个中的一个。下次运行相同的查询时,它可能不是选择的同一行!
归档时间: |
|
查看次数: |
131 次 |
最近记录: |