之间的数值为下表时一般方法:需要计算行
Id Timestamp AssignedTo
1 2012-01-01 User1
2 2012-01-02 User2
3 2012-01-10 User3
4 2012-01-15 User1
这将是在MS SQL Server中的一般方法来计算该实体多少天/小时/分钟分配到一个特定的用户?
作为一名开发人员(拥有基本的SQL知识),我在做这些查询时总是选择函数或存储过程(这类查询包括基于集合中两行之间差异的结果)。
在这个例子中,我将有一个游标迭代项目,保留前一个变量,然后计算差异。不过,我被告知这是一个严重的性能问题,特别是在大型设备上。
编辑:样品结果
User TotalTime
User1 23d
User2 8d
User3 5d
即项被分配给特定用户的总时间。 User1的总时间为23天,因为自2012-01-15(现在是2012-02-06)以来,User1的总时间已分配给他,并且分配给他的第一天。
根据数据库,可以使用高级SQL功能,那么这是什么数据库?此外,你能提供一些例子输出吗?我不确定你期望得到什么结果... – 2012-02-06 09:19:49
添加了示例数据和MSSQL DBMS。 – grimstoner 2012-02-06 09:45:48
太糟糕了,它是MSSQL/SQL Server,所以你不能使用'ROWS 1 PRECEDING'和类似的窗口函数结构。但在这里看看这个问题,它将包含一些类似问题的答案:http://stackoverflow.com/questions/860966/calculate-a-running-total-in-sqlserver – 2012-02-06 09:48:44