問題:對於包含日期列,任意數量的類別列和值列的給定記錄集,我想計算任意日期窗口的值的聚合,例如30天,365天等等。我已經看過窗口集合函數,CTE和其他一些函數,但它們並沒有出現(至少對我來說)來執行所需的功能。SQL移動聚合
下面的SQL(T-SQL)代表了我試圖完成的基本概念,但是我對它的可伸縮性,特別是連接有不好的感覺,並且一旦我嘗試按其他名義組進行分組,就會遇到困難。
SELECT
basedate
, count(*) as [n]
, sum(Value) as [SumValue]
, avg(value) As [AverageValue]
, stdev(value) As [StdevValue]
FROM
(SELECT t1.basedate , t2.*
FROM
(SELECT DISTINCT dt as basedate from foo)as t1
,foo as t2
WHERE datediff(d, t1.basedate, t2.dt) between -30 and 0
) t3
GROUP BY t3.basedate
ORDER BY t3.BASEDATE DESC
我創建了一個SQLFiddle來試圖使它更加具體。
謝謝。
您是否使用SQL Server 2008作爲你的小提琴建議? – 2015-02-24 17:45:50
我目前正在使用SQL-Server 2008,但這可能是一條Teradata查詢。 – user3092841 2015-02-24 17:47:43