之間的數值爲下表時一般方法:需要計算行
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