【发布时间】:2020-04-01 20:08:30
【问题描述】:
我有两张表,一张有任务,另一张有动作。在任务表中,我有具有 ID、开始日期(任务创建时间)和结束日期(任务关闭时间)的任务。在操作表中,我有在任务表中完成的操作,因此它具有 ID、task_ID、action_ID 和操作时间。 我想计算关闭任务所需的时间(结束日期 - 开始日期),但由于有可能暂停任务,所以我想排除暂停时间。 例如:
动作表:
ID TASK_ID ACTION_ID TIME
1 2593 1 2020-03-25 07:05:48.000
2 2593 11 2020-03-25 11:05:48.000
3 2593 22 2020-03-25 20:05:48.000
4 2593 11 2020-03-26 07:05:48.000
5 2593 22 2020-03-27 07:04:31.000
6 2593 2 2020-03-27 15:04:31.000
任务 ID 是指任务表。 Action ID 1 表示任务已打开,11 表示任务已暂停,22 表示暂停已取消,2 表示任务已完成/关闭。 因此,在示例中,任务暂停了两次,我想计算从开始 (ID 1) 到结束 (ID 2) 的时间,但不包括暂停时间(ID 11 和 22 之间的时间)。
最好的方法是什么?
谢谢。
【问题讨论】:
-
我似乎无法理解您喜欢用这些表格做什么。是否需要计算多次来的同一个task_id的记录之间的时间差?
-
我改变了时代,所以现在应该更好理解。一个任务 ID 有多个动作(例如暂停)。我想计算完成/关闭任务所花费的时间,即操作 ID 1 和 ID 2 之间的时间,但从总时间中减去暂停时间(ID 11 和 22 之间)。如果任务被多次暂停,那么它应该减去所有这些暂停,如示例中所示。
标签: sql sql-server