0
我有一個表,其中包含用於更改維護服務狀態的事件。這是數據的一個樣本:基於事件表的計算設置,除了事件
id date event
234 2009-04-22 10:00:00 Service Request
234 2009-04-22 10:02:00 Service Approbation
234 2009-04-22 10:03:00 Service Asignation
234 2009-04-22 10:40:00 Service Fulfilled
...
在一份報告中,我需要花費展現在每個項目上
id time
234 40 minutes
235 37 minutes
...
基本上時候,我正在做一個DATEDIFF這樣的:
SELECT ...
, DATEDIFF(SECOND,
(SELECT TOP 1 date FROM event_table ev WHERE ev.item = itm.id AND event = 1 ORDER BY date),
(SELECT TOP 1 date FROM event_table ev WHERE ev.item = itm.id AND event = 4 ORDER BY date DESC)
), ...
FROM item_table itm
WHERE ...
現在我必須實現一個新的狀態。延遲和重新激活服務,但在計算花費在該服務上的時間總量時,不會考慮這些時間。
id date event
234 2009-04-22 10:00:00 Service Request
234 2009-04-22 10:02:00 Service Approbation
234 2009-04-22 10:03:00 Service Asignation
234 2009-04-22 10:07:00 Service Delayed -- new state
234 2009-04-22 10:37:00 Service Reactivated -- new state
234 2009-04-22 10:40:00 Service Fulfilled
...
報告
id time
234 10 minutes -- Substract 30 minutes between Delay and Reactivation
235 26 minutes
...
延遲和激活能爲任何項目進行不同的時間。
我知道我可以用光標做到這一點,但對我來說似乎很難受,有什麼方法可以在基於集合的方法上進行計算嗎?
這似乎是你最後一版的工作,我要檢查,謝謝 – 2009-04-22 16:03:16