Вот мой текущий запрос:REPLICATE Oracle, BETWEEN синтаксиса п взвешивания с SQL Server
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
Есть ли способ можно повторить функциональность RANGE BETWEEN
в SQL Server? Диапазон между текущим месяцем и 11 предыдущими месяцами.
http://technet.microsoft.com/en-us/library/ms189461. aspx К сожалению, MS SQL Server не полностью реализует RANGE, например, Oracle ... Кажется, что нет простого обходного пути. <спецификация без знака> PRECEDING Указано <спецификация без знака> для указания количества строк или значений, предшествующих текущей строке. Эта спецификация не разрешена для RANGE. – user2653921
Справа вы, извинения; Наверное, мне нужно читать ближе! Выполняя еще несколько исследований, вопреки шумихе, похоже, что Microsoft по-прежнему продолжает движение по полю, без поддержки интервальных фреймов (что вы пытаетесь сделать) и нескольких других областей, связанных с функциями окна, также отсутствует. https://www.simple-talk.com/sql/learn-sql-server/window-functions-in-sql-server-part-2-the-frame/ –