在Window函数中使用条件限制RANGE

时间:2017-04-12 12:51:47

标签: sql-server sql-server-2014 window-functions median moving-average

举个例子我有以下交易表,每个部门的交易价值为每个三个月。

    TransactionID  | Department | Trimester | Year | Value | Moving Avg
    1              | Dep1       |     T1    | 2014 |   13  |
    2              | Dep1       |     T1    | 2014 |   43  |
    3              | Dep1       |     T2    | 2014 |   36  |

   300             | Dep1            T1 |    2017 |   28  |
   301             | Dep2            T1 |    2014 |   24  |

我想计算来自同一部门的每笔交易的移动平均线,从当前行的三个月前的6个三个月到两个月的窗口。在2017年的T1中交易300的示例,我想要将Dep1的交易价值的平均值从T1-2015提高到T2-2016。

如何在SQL Server 2014中使用滑动窗口功能实现此目的。我的想法是我应该使用类似

的内容
SELECT 
AVG(VALUES) OVER 
(PARTITION BY DEPARTMENT ORDER BY TRIMESTER, 
YEAR RANGE [Take the range from previous 6 to 2 trimesters])

我们如何定义RANGE子句。我想我无法使用ROWS,因为窗口的行数是未知的。

中位数相同的问题。我们如何重写计算中位数而不是平均值?

0 个答案:

没有答案