Database 甲骨文没有';两次使用同一列时,不能正确排序

Database 甲骨文没有';两次使用同一列时,不能正确排序,database,oracle,sorting,date,Database,Oracle,Sorting,Date,运行此查询时,结果排序不正确 SELECT SYSDATE - datecolumn a, SYSDATE - datecolumn sortcolumn FROM atable ORDER BY sortcolumn 产生: 2576.780243055555555555555555555555555556 2586.297013888888888888888888888888888889 2342.294479166666666666666666666666666667 2617

运行此查询时,结果排序不正确

SELECT 
  SYSDATE - datecolumn a,
  SYSDATE - datecolumn sortcolumn
FROM atable
ORDER BY sortcolumn
产生:

2576.780243055555555555555555555555555556
2586.297013888888888888888888888888888889
2342.294479166666666666666666666666666667
2617.297476851851851851851851851851851852
2624.855104166666666666666666666666666667
2624.855138888888888888888888888888888889
2624.854236111111111111111111111111111111
2372.296643518518518518518518518518518519
2645.257800925925925925925925925925925926
2403.294756944444444444444444444444444444
2676.297696759259259259259259259259259259

删除第一行(SYSDATE-datecolumn a,)后,一切正常。发生这种情况有什么特别的原因吗?

这似乎是一个bug。这种行为看起来类似于bug 8675087,它被认为在11.2.0.2中已经修复了——事实上,我无法重现这个测试用例。但我仍然在该版本(on)和11.2.0.3中看到您的行为,因此这是相似的,但并不完全相同


如果这是一个真正的问题,并且您找不到满意的解决方法(例如交换列顺序;如果您的
sortcolumn
是第一个使用
sysdate
的表达式,那么这似乎是可以的,但在真正的查询中交换列可能并不方便)然后您应该向Oracle提出服务请求。

。复制于11.2.0.2

即使查询包装在子查询中,也会发生以下情况:

select * from (
  select sysdate - db_created_on a
        ,sysdate - db_created_on b
  from members
) order by b;
(结果排序不正确)

(结果排序正确)

我能想到的最佳解决方法是对SYSDATE使用标量子查询,这似乎会使它正确排序:

select sysdate - db_created_on a
      ,(select sysdate from dual) - db_created_on b
from members
order by b;

尝试将编号(SYSDATE-datecolumn)作为排序列
。我假设SQL的排序不是数字的。有趣的行为(我可以在Oracle11GR2上确认)。有很多解决方法,但最好知道这是一个bug还是一个功能。在我的Instance上,如果一切正常,请尝试重建您的表(当表损坏时,我会遇到oracle问题)或提供完整的测试用例(创建和填充表)
select sysdate - db_created_on a
      ,(select sysdate from dual) - db_created_on b
from members
order by b;