我有一個表,其中記錄在不同時段插入(每個記錄包含一個名爲'Amount'的列)。作爲基於時間段的累計求和的列
我想在每5秒後顯示總數量。我曾與下面的查詢嘗試沒有成功:
SELECT Sum(totalamount) AS RealTimeTotalAmount,
Datepart(second, createstamp)/5 AS dp
FROM [order]
WHERE
createstamp BETWEEN Dateadd(s, -5, Getdate()) AND Getdate()
GROUP BY Datepart(second, createstamp)/5
我現在面臨的問題是,它讓我看到了「累計金額按每一秒」,我想看看它像「(累計金額爲每每一秒+總金額累計到那第二)」
這裏是源數據的樣子:
-----------------------------------------------------------
|OrderID | CreateStamp | TotalAmount |
-----------------------------------------------------------
|1 |2015-03-22 15:26:05.620 | 10 |
-----------------------------------------------------------
|2 |2015-03-22 15:26:05.653 | 20 |
-----------------------------------------------------------
|3 |2015-03-22 15:26:05.660 | 10 |
-----------------------------------------------------------
|4 |2015-03-22 15:26:06.663 | 10 |
-----------------------------------------------------------
|5 |2015-03-22 15:26:06.670 | 30 |
-----------------------------------------------------------
從本質上講,我希望得到的查詢返回如下:
----------------------------------------
|Period | Accumulative Amount |
----------------------------------------
|0 to 5 seconds | 30 |
----------------------------------------
|0 to 10 seconds | 80 |
----------------------------------------
這基本上是一個從0時間到5的倍數的累計。對於最近5秒,基本上我計算了整天的時間,直到我執行這個查詢的時間,例如前一天的金額這次是50,所以結果表應該看起來像
----------------------------------------
|0 to 5 seconds | 30 + 50 = 80 |
----------------------------------------
|0 to 10 seconds | 80 + 80 = 160 |
----------------------------------------
什麼版本的SQL Server您使用的是? SQL Server 2012中的窗口函數有顯着的改進。 –
我使用的SQL Server 2008 – rashfmnb