【发布时间】:2014-05-17 12:26:01
【问题描述】:
我正在从 12.5 升级 Sybase 15.7,我遇到了一个特殊的问题。下面查询
select rs.EmpId, rs.Date, rs.Currency, rs.Salary,
from #Results rs, #EmpSort es
where rs.EmpId = es.EmpId
order by es.EmpCode, rs.Currency
在执行时,在 Sybase 15.7 中,结果被分组为货币并根据薪水 desc 排序,而在 Sybase 12.5 中,结果被分组为货币并根据日期 asc 排序。我不确定为什么会这样。
【问题讨论】:
-
毫无意义,您的意思是按 empcode 分组,然后按货币分组,然后按日期排序。如果是这样,那么所发生的只是查询计划已更改。如果你想按日期订购,那么你应该把它放在你的订单中。与升级无关,只要您更改架构就可能发生。
-
好的,根据 Sybase 15.7 的建议,我们在使用 group by 时应遵循 order by。所以我相应地更改了我现有的商店 Proc(12.5)。在更改所有代码后,最后一段代码在查询之上,它应该像 12.5 一样工作,但它不起作用。在休息代码中,我使用 group by 作为日期和货币,然后是 order by。
-
嗯?您是在谈论其他查询吗?这个没有分组,它从来没有也永远不会按日期排序。充其量数据已经按日期排序。如果上面是按 12.5、15.6 甚至 8.75678 的日期排序,那是因为你很幸运。
-
在上面的查询临时表中 #results 是最终表,其中数据从现有表中插入并按日期和货币分组,然后按日期货币排序
-
您发布的查询从未按日期排序,因此要么您发布了错误的查询,要么您没有听我在说什么。选择插入时,数据恰好按日期顺序排列。你永远不能依赖那保持不变的真实。只有按日期排序或按日期分组才能保证它是按日期顺序排列的。
标签: group-by sql-order-by sybase sap-ase