【问题标题】:Order By not working in Sybase 15.7在 Sybase 15.7 中不工作的顺序
【发布时间】: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


【解决方案1】:

我检测到以下问题

1.- 从第一行删除最后一个逗号

select  rs.EmpId,   rs.Date, rs.Currency, rs.Salary  (,)

2.- 您通过 es.EmpCode 订购,但您列出的字段是

 rs.EmpId,   rs.Date, rs.Currency, rs.Salary,  

将 es.EmpCode 添加到您列出的字段中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多