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

如何用SQL按时间生成idTime?现有查询结果错误求修正

修正SQL生成idTime字段的问题

需求说明

需要生成idTime字段,规则为:按empID和date分组,每组内按time升序生成从1开始的递增序号,预期效果如下:

empIDdatetimeidTime
1000101-07-202207:30:011
1000101-07-202216:30:012
1000102-07-202207:30:011
1000103-07-202223:30:011
1000103-07-202214:30:012
1000103-07-202224:30:013
1000201-07-202207:30:011
1000201-07-202217:30:012

原SQL问题分析

你编写的SQL语句存在语法错误:

SELECT empId, dt, tm, ROW_NUMBER() OVER (PARTITION BY empId AND dt ORDER BY tm ASC)idTime FROM attEmp order by empId, dt ASC, tm ASC

错误点在于PARTITION BY子句中,多字段分区应该用逗号分隔,而非AND。使用AND会将empId和dt的逻辑运算结果作为分区依据,导致分区逻辑完全错误,无法按预期分组生成序号。

修正后的SQL

SELECT empId, dt, tm, 
       ROW_NUMBER() OVER (PARTITION BY empId, dt ORDER BY tm ASC) AS idTime 
FROM attEmp 
ORDER BY empId, dt ASC, tm ASC

修正说明

  1. 将PARTITION BY empId AND dt改为PARTITION BY empId, dt,实现按员工ID和日期的组合进行分区
  2. 为idTime字段添加AS关键字,使语法更规范(部分数据库允许省略,但添加后可读性更强)

执行修正后的SQL即可得到符合预期的idTime序号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:57:14