oracle返回第一行,不返回第一行

Gan*_*row 0 oracle oracle-11g

我有这个查询:

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:

在此处输入图片说明

ype*_*eᵀᴹ 5

答案就在那里,在数据中。(我假设时间部分00:00:00在所有这些中):

order by有联系。没有一个“第一行”,而是其中的 3 个。

因此,当第二个查询将结果限制为一行时,会任意选择 3 个中的一个。下次运行相同的查询时,它可能不是选择的同一行!