我正在编写一个简单的时间跟踪程序来管理我自己的项目。我非常喜欢在数据库中保存报告代码,所以我一直在尝试创建一些 sprocs 来生成发票和时间表等。
我有一个表,其中包含时钟操作、IE“Punch In”和“Punch Out”。它还包含执行此操作的用户、与该操作关联的项目以及当前日期/时间。
我可以从此表中选择以获取特定时间/项目/和用户的打卡信息,但我想将其汇总,以便每个打卡和打卡都从 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)
其中 ActionType 1 是“ClockIn”,ActionType 2 是“ClockOut”。为简洁起见,我还删除了 User、Project 和 Description 列。
我需要在纯 SQL 中生成一个结果集,例如:
Description | Total Time
对于每个 ClockIn / ClockOut 对。
我认为这实际上会相当简单,我只是不太确定采用哪种方法。
编辑:用户将能够同时进入多个项目,尽管首先将结果集缩小到单个项目,这对这里的逻辑没有任何影响。