首先让我道歉,如果这没有任何意义。我花了一些时间把它写下来并自己理解。如果有任何令人困惑的地方,我深表歉意。我对此很陌生,并尽力解释。我也为 qustion 标题道歉,如果它不代表。如果有人知道更好的标题,请编辑或进行必要的更改。
我有两张表 JOBS 和 PHASES。
JOBS
Id
Job_Type (ex. 0 = import)
Title
PHASES
Id
Jobs_Id
Phase_Type
Title
Start_Time
End_Time
Duration
每个 job/job_type 可以有任意数量的阶段 - 每个阶段都有开始、结束和持续时间
我想从 PHASES 表中选择字段 jobs_id、start_time、end_time 和 duration,并将每个 job_type 的所有持续时间相加(例如:job_type = 0,这是一个导入作业)
SELECT jobs_id, start_time, end_time, duration FROM phases
JOIN jobs ON phase.jobs_id = jobs.id
WHERE jobs.job_type=0
return jobs_id 返回最早的开始时间作为开始返回最后的结束时间作为结束返回它们的总持续时间 TotalDuration
例如,如果以下数据在 JOBS 表中(Id、Job_Type、Title)
1, 0, Import
以下数据在 PHASES 表中(id、job_id、phase_type、title、start、end、duration)
1, 1, 1, 0, Run Preprocessor, 10/18/2012 8:52 PM, 10/18/2012 9:00 PM, 00:08:00
2, 1, 2, 1, Massage Data, 10/18/2012 9:00 PM, 10/18/2012 9:05 PM, 00:05:00
3, 1, 3, 2, Run Postprocessor, 10/18/2012 9:05 PM, 10/18/2012 9:07 PM, 00:02:00
4, 2, 1, 0, Run Preprocessor, 10/18/2012 9:15 PM, 10/18/2012 9:20 PM, 00:05:00
5, 2, 2, 1, Massage Data, 10/18/2012 9:20 PM, 10/18/2012 9:25 PM, 00:05:00
6, 2, 3, 2, Run Postprocessor, 10/18/2012 9:30 PM, 10/18/2012 9:35 PM, 00:05:00
上图显示了两个作业(job_type = 0)的信息(阶段)
我需要一个可以组合阶段并显示最早开始和最晚结束以及总持续时间的 SQL 语句。我希望返回此信息(Job_id、Start、End、TotalDuration)
1, 10/18/2012 8:52 PM, 10/18/2012 9:07 PM, 00:05:00
2, 10/18/2012 9:15 PM, 10/18/2012 9:35 PM, 00:15:00