这是我当前的查询:
SELECT
item_id,
date,
(avg * stddev(value) over(partition by item_id order by to_date(date,'yyyymm')
RANGE BETWEEN INTERVAL '11' MONTH PRECEDING AND CURRENT ROW)
+
price * stddev(value2) OVER(PARTITION BY item_id ORDER BY to_date(date,'yyyymm')
RANGE BETWEEN INTERVAL '11' MONTH PRECEDING AND CURRENT ROW)
) as a
from table1
有没有办法在SQL Server中复制RANGE BETWEEN
的功能?本月和前11个月之间的差距。
答案 0 :(得分:1)
从2012版本开始,SQL Server添加了对窗口功能的支持,就像您在Oracle中所做的那样。唯一的区别是日期处理,因为Oracle具有日期间隔文字值的唯一语法(例如“INTERVAL'11'MONTH”)。
有关SQL Server 2012中窗口函数的信息,请参阅http://technet.microsoft.com/en-us/library/ms189461.aspx
有关日期范围处理的信息,请参阅http://technet.microsoft.com/en-us/library/ms186724.aspx