我正在写一个简单的时间跟踪程序来管理我自己的项目。我非常喜欢将报告代码保存在数据库中,所以我一直在尝试创建一些生成发票和时间表的sprocs。我该如何计算check in和check out列表中的timespans?
我有一个表,其中包含时钟操作,IE“Punch In “和”冲出“。它还包含执行此操作的用户,与操作关联的项目和当前日期/时间。
我可以从此表中选择为特定时间/项目/和用户获取时钟,但我想将它聚合,以便每个时钟输入和输出都从2行转换为包含总时间的单个行。
例如,这里是一个示例输出:
ClockActionID ActionType DateTime
-------------------- ---------- -----------------------
17 1 2008-11-08 18:33:56.000
18 2 2008-11-08 18:33:59.587
19 1 2008-11-08 18:34:01.023
20 2 2008-11-08 18:34:02.037
21 1 2008-11-08 18:45:06.317
22 2 2008-11-08 18:46:14.597
23 1 2008-11-08 18:46:16.283
24 2 2008-11-08 18:46:17.173
25 1 2008-11-08 18:50:37.830
26 2 2008-11-08 18:50:39.737
27 1 2008-11-08 18:50:40.547
(11 row(s) affected)
当操作类型1为 “ClockIn” 和操作类型2是 “CLOCKOUT”。为了简洁,我还修剪了User,Project和Description列。
我需要生成,在纯SQL,一个结果集,如:
Description | Total Time
对于每个ClockIn/CLOCKOUT对。
我想这实际上会很简单,我只是不太确定接近它的方式。
编辑:用户将能够同时计时到多个项目,虽然通过首先缩小结果集到单个项目,这应该不会对这里的逻辑有任何区别。
你想要什么叫做临时连接操作。 – kasperjj 2008-11-09 03:25:43
您能否详细说明或链接到一些信息? – FlySwat 2008-11-09 03:28:58