使用SQL Server复制Oracle的RANGE BETWEEN窗口子句语法

时间:2013-11-12 16:41:12

标签: sql sql-server oracle sql-server-2012 window-functions

这是我当前的查询:

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个月之间的差距。

1 个答案:

答案 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