2015-12-01 127 views
0

我有一個SQL Server數據庫,其中存儲每個員工按日期工作的小時數。我需要計算每個員工在過去7天內工作的總時間,以及我的表格中的每個日期。計算每個日期的7天總計

我的數據看起來如下

Data Table

而我想產生如下

Weekly Totals

每次嘗試我在T-SQL提出建立一個查詢產生這些結果將不會執行,因爲我一直想從我的外部查詢中引用一個字段,在子查詢中如下 -

My T-SQL

我沒有考慮使用PARTITION BY但我認爲這會給我的員工總數在過去的7項,而不是總在過去的7天(日期範圍),因爲有時會出現沒有進入對於特定日期的員工(例如,請注意,在02/11/2015沒有Bob的條目)。

我在這裏使用英國的日期格式。

另外{Start}和{End}是客戶端設置的參數,例如,如果他們想在11月看到所有的每週總數,他們會設置{Start} = 01/11/2015和{結束} = 30/11/2015。這些將在Crystal Reports中設置,而不是在TSQL中。我只是在這裏解釋我的最終目標是什麼。

回答

3

在SQL Server中,可能是最簡單的方法是使用outer apply

select t.*, tt.weekly 
from t outer apply 
    (select sum(t2.daily) as weekly 
     from t t2 
     where t2.name = t.name and 
      t2.date > dateadd(day, -7, t.date) and 
      t2.date <= t.date 
    ) tt; 
+0

優秀的感謝 – PJW