SQL,天生指定时间隔断内的事故序次号

[复制链接]
发表于 2025-11-23 17:51:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
MSSQL 数据库某表有三个字段:账号、字符串范例的日期和时间。
Account_NumberFuelPurchase_DateFuel_TOD
192024-04-0307:02:02 AM
192024-04-0307:02:41 AM
192024-04-0302:58:49 PM
192024-04-0307:58:49 PM
192024-04-0502:58:49 PM
192024-04-0502:59:31 PM
192024-04-1711:56:13 PM
202024-04-1711:59:13 PM
192024-04-1812:15:13 AM
192024-04-1802:56:13 PM
202024-04-1807:41:55 AM
202024-04-1807:41:55 PM
202024-04-1807:56:55 PM
192024-04-1907:41:55 AM
192024-04-1907:42:20 AM
192024-04-1908:41:20 AM
如今要新增一个分组的序号列 Seq,当某个账号在一个小时内发生新事故时,Seq+1;假如一个小时后才发生新事故,则重置 Seq 为 1。
Account_NumberFuelPurchase_DateFuel_TODSeq
192024-04-0307:02:02 AM1
192024-04-0307:02:41 AM2
192024-04-0302:58:49 PM1
192024-04-0307:58:49 PM1
192024-04-0502:58:49 PM1
192024-04-0502:59:31 PM2
192024-04-1711:56:13 PM1
192024-04-1812:15:13 AM2
192024-04-1802:56:13 PM1
192024-04-1907:41:55 AM1
192024-04-1907:42:20 AM2
192024-04-1908:41:20 AM3
202024-04-1711:59:13 PM1
202024-04-1807:41:55 AM1
202024-04-1807:41:55 PM1
202024-04-1807:56:55 PM2
编写SPL代码
 A
1=mssql.query("select *,cast(FuelPurchase_Date as datetime) + cast(Fuel_TOD as datetime) as DT from tb order by Account_Number,DT”)
2 =A1.new(Account_Number,FuelPurchase_Date,Fuel_TOD,
if(Account_Number==Account_Number[-1] && interval@s(Fuel_DT[-1],Fuel_DT)<3600,Seq[-1]+1,1):Seq)
A1:通过JDBC查询数据库,拼出日期时间范例的盘算列DT,并按账号和DT排序。
A2:新建二维表,增长新盘算列Seq。当前记载的账号与上一条记载雷同,且时间隔断一小时内时,Seq+1;否则将Seq重置为1。[-1]表现相对位置的上一条记载。
SPL已开源免费,欢迎前往乾学院社区相识更多!
SPL源码地点
免费下载

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表