You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正Oracle SQL查询以正确获取每位员工每小时的最新记录

Oracle SQL查询修复方案

现有代码问题点

  • SELECT子句中多个查询字段之间缺少逗号分隔,属于语法错误,会导致SQL执行解析异常,是返回结果条数不符合预期的核心原因
  • WHERE条件SEQNUM = 1后多余的分号会提前终止SQL语句,导致后续ORDER BY逻辑不生效,同时可能触发执行器解析错误

修正后可用代码

select
     TRANSACTION_ID,
     EMPLOYEE_ID,
     FIRST_NAME,
     LAST_NAME,
     TIME_STAMP
from (select d.*,
             row_number() over (partition by EMPLOYEE_ID, trunc(TIME_STAMP, 'HH') order by TIME_STAMP desc) as SEQNUM
      from MAIN.DATABASE d
     ) d
where SEQNUM = 1
order by TRANSACTION_ID desc;

补充说明

原有分组逻辑本身符合需求:按EMPLOYEE_ID+ 小时精度的TIME_STAMP分区,每个分区内按时间倒序取第一条,即可得到每位员工每小时的最新记录。如果修正语法后返回条数仍不符合预期,可检查TIME_STAMP字段类型是否带时区属性,如有需要可转换为本地时间后再做trunc处理,避免时区偏移导致的分组错误。

内容的提问来源于stack exchange,提问作者David Boutin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:15:02