【发布时间】:2014-01-24 16:43:03
【问题描述】:
我有一个表,其中包含 Machine、job_name、Start_time 列。机器和作业名称是文本,Start_time 是日期/时间。
我想要一个返回机器的下一个按时间顺序开始时间作为结束时间的查询。
我尝试使用 MIN(start_time) > 开始时间。但这会为每个可能的结束时间返回一行多个开始时间。我不确定如何将每行的 Start_time 识别为比较 start_time。
表格示例。
MAchine, Job_name, Start_time
scanner, A1A, 1/24/2014 8:00am
scanner, ABA, 1/24/2014 12:00pm
scanner, A1B, 1/24/2014 10:00pm
scanner, AC3, 1/25/2014 4:00am
scanner, AG2, 1/25/2014 11:00am
scanner, BK4, 1/25/2014 3:00pm
scanner1, AA, 1/24/2014 9:00am
scanner1, AA, 1/24/2014 1:00pm
scanner1, AB, 1/24/2014 8:00pm
scanner1, A3, 1/25/2014 2:00am
scanner1, A2, 1/25/2014 7:00am
scanner1, B4, 1/25/2014 2:00pm
scanner2, A1, 1/24/2014 11:00am
scanner2, AB, 1/24/2014 12:00pm
scanner2, A1, 1/24/2014 5:00pm
scanner2, AC, 1/25/2014 1:00am
scanner2, A2, 1/25/2014 5:00am
scanner2, K4, 1/25/2014 2:00pm
我想要下面的结果。
MAchine, Job_name, Start_time
scanner, A1A, 1/24/2014 8:00am, 1/24/2014 12:00pm
scanner, ABA, 1/24/2014 12:00pm, 1/24/2014 10:00pm
scanner, A1B, 1/24/2014 10:00pm, 1/25/2014 4:00am
scanner, AC3, 1/25/2014 4:00am, 1/25/2014 11:00am
scanner, AG2, 1/25/2014 11:00am, 1/25/201 3:00pm
scanner, BK4, 1/25/2014 3:00pm,
scanner1, AA, 1/24/2014 9:00am, 1/24/2014 1:00pm
scanner1, AA, 1/24/2014 1:00pm, 1/24/2014 8:00pm
scanner1, AB, 1/24/2014 8:00pm, 1/25/2014 2:00am
scanner1, A3, 1/25/2014 2:00am, 1/25/2014 7:00am
scanner1, A2, 1/25/2014 7:00am, 1/25/2014 2:00pm
scanner1, B4, 1/25/2014 2:00pm,
scanner2, A1, 1/24/2014 11:00am, 1/24/2014 12:00pm
scanner2, AB, 1/24/2014 12:00pm, 1/24/2014 5:00pm
scanner2, A1, 1/24/2014 5:00pm, 1/25/2014 1:00am
scanner2, AC, 1/25/2014 1:00am, 1/25/2014 5:00am
scanner2, A2, 1/25/2014 5:00am, 1/25/2014 2:00pm
scanner2, K4, 1/25/2014 2:00pm,
【问题讨论】:
-
你运行的是什么版本的SQL Server,兼容模式是什么?
-
Sql Server 2012。兼容性级别 100。
-
LAG和LEAD在 2008 兼容级别上仍然有效。
标签: sql sql-server time sql-server-2012