SQL Server - не работает переразметка с ROWS между UNBOUNDED PRECEDING? - PullRequest
0 голосов
/ 19 сентября 2018

Согласно документации :

UNBOUNDED PRECEDING Относится к: SQL Server 2012 (11.x) через SQL Server 2017.

Указывает, чтоОкно начинается с первого ряда раздела.UNBOUNDED PRECEDING можно указать только как начальную точку окна.

Как получится, если использовать это:

avg(Qty) over (partition by [Name] ORDER BY [Period] desc ROWS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING)

Я все еще получаю скользящие средние.

Я понимаю, что приведенная выше конструкция должна дать мне эквивалент Select TOP(3) avg(qty)..., по крайней мере, согласно документации.

Я что-то упустил?

1 Ответ

0 голосов
/ 15 октября 2018

После исследования, тестирования и анализа доступной документации следует помнить, что мое понимание было неполным: при работе с ROWS в любой конфигурации контрольная точка всегда является текущей строкой.Поэтому мой запрос:

avg(Qty) over (partition by [Name] 
    ORDER BY [Period] desc ROWS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING)

просто означает «получить все строки от начала раздела окна до текущей строки и еще 2 строки».Невыраженная часть - это «текущая строка», которая всегда там.

Спасибо Damien_the_Unbeliever за то, что я изложил очевидное, что заставило меня задуматься.

...