在两次使用同一列时,Oracle无法正确排序

Ada*_*kes 8 database sorting oracle date

当我运行此查询时,结果未正确排序.

SELECT 
  SYSDATE - datecolumn a,
  SYSDATE - datecolumn sortcolumn
FROM atable
ORDER BY sortcolumn
Run Code Online (Sandbox Code Playgroud)

生产:

2576.780243055555555555555555555555555556
2586.297013888888888888888888888888888889
2342.294479166666666666666666666666666667
2617.297476851851851851851851851851851852
2624.855104166666666666666666666666666667
2624.855138888888888888888888888888888889
2624.854236111111111111111111111111111111
2372.296643518518518518518518518518518519
2645.257800925925925925925925925925925926
2403.294756944444444444444444444444444444
2676.297696759259259259259259259259259259
Run Code Online (Sandbox Code Playgroud)

当删除第一行(SYSDATE - datecolumn a,)时,一切正常.这有什么特别的原因吗?

Ale*_*ole 5

这似乎是一个错误。此行为看起来与错误 8675087 类似,据说该错误已在 11.2.0.2 中修复 - 事实上我无法重现该测试用例。但我仍然看到您在该版本(在SQL Fiddle上)和 11.2.0.3 中的行为,所以这很相似但不完全相同......

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