2015-08-21 63 views
0

好吧,這很簡單,但我畫了一個空白,甚至無法想出正確的單詞組合來搜索答案。根據單元格值計算平均時間

我有一個tsql表的開始和結束時間,任務,以及新的/重複標誌。

我想拉開始和結束之間的平均持續時間,無論是記錄是新的還是重複時。我將分組任務。

我的結果看起來像任務 - NewDurationAverage - RepeatDurationAverage。

提前歡呼。

+1

你放什麼努力到現在? – mohan111

+0

我嘗試了一個NewAvg = Case type ='new',然後avg(持續時間)結束,RepAvg = Case type ='Repeat'然後avg(duration)結束並分組,然後不得不再次分組。它正在工作,雖然 – Matt

回答

1

您的查詢應該是這樣的:

SELECT TaskId, NewDurationAverage, RepeatDurationAverage FROM 

(SELECT TaskId, DATEDIFF(hh, TaskStart, TaskEnd) as NewDurationAverage 
    FROM Task WHERE IsNew=1 GROUP BY TaskId) NewTasks 

LEFT OUTER JOIN 

(SELECT TaskId, DATEDIFF(hh, TaskStart, TaskEnd) as RepeatDurationAverage 
    FROM Task WHERE IsRepeat=1 GROUP BY TaskId) RepeatTasks 

ON NewTasks.TaskId=RepeatTasks.TaskId 
+0

是的。謝謝。我很累,知道這是一個簡單的解決方案。歡呼你的指導 – Matt

0

您需要按照以下步驟操作:

  1. 找到startend日期/時間列之間的差異。例如,使用DATEDIFF功能
  2. 計算出的值
  3. 執行AVG轉換以任何適當的格式,結果你想

根據您的需求,您可以DATEDIFF返回的時間差慾望格式(天,分,納秒等)。所以,必須決定結果應該如何精確(越小越好)。