У меня есть следующий виртуальный столбец, сгенерированный из совокупности по отсортированному разделу,
MIN(picture_id) OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
Однако, когда я выполняю это, я получаю следующее.
Msg 11305, Level 15, State 10, Line 12
The Parallel Data Warehouse (PDW) features are not enabled.
Вот где это становится интересным, хотя, без порядка сортировки на разделе, это работает:
MIN(picture_id) OVER ( PARTITION BY [360_set] )
И, кроме того, ROW_NUMBER()
оконная функция (не агрегатная функция) работает с явным порядком в разделе.
ROW_NUMBER() OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
Почему желаемое утверждение не работает? Где это задокументировано? Информация о версии была запрошена, это то, что я в справке → О.
Microsoft SQL Server Management Studio 10.0.5512.0
Microsoft Analysis Services Client Tools 10.0.5500.0
Microsoft Data Access Components (MDAC) 6.1.7601.17514
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.10.9200.16635
Microsoft .NET Framework 2.0.50727.5472
Operating System 6.1.7601
Результат от SELECT @@VERSION
ISMicrosoft SQL Server 2008 (SP3) - 10.0.5512.0 (X64) Aug 22 2012 19:25:47 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)
sql-server-2008-r2
window-functions
Эван Кэрролл
источник
источник
[360_set]
, или эта часть не имеет значения? Кроме того, из вашего комментария формула, которую вы дали, работает, как текстовое описание, только если в последовательности нет пробелов. Какой ты хочешь?MIN
работу, но оно меняет строки в кадре, над которымMIN
выполняется.RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
. Таким образом, окно содержит только значения соpicture_id
значениями, меньшими или равными значению в текущей строке.Ответы:
Это ошибка синтаксического анализатора, которая существует только в SQL Server 2008. Версии SQL Server , не
ORDER BY
относящиеся к PDW, до 2012 года не поддерживают предложение с агрегатными функциями, такими какMIN
:Поддержка оконных функций была значительно расширена в 2012 году по сравнению с базовой реализацией, доступной начиная с SQL Server 2005. Расширения были доступны в Parallel Data Warehouse до их включения в коробочный продукт. Поскольку различные редакции имеют общую кодовую базу, возможны вводящие в заблуждение сообщения об ошибках, подобные этому.
Если вам интересно, стек вызовов, когда агрегат проверяется парсером, показан ниже. Поскольку у агрегата есть
OVER
предложение сORDER BY
, выдается проверка для PDW:Эта проверка немедленно завершается с ошибкой синтаксического анализатора:
К счастью, вам не нужен оконный агрегат, который поддерживает
ORDER BY
кадрирование для решения вашей проблемы с кодом.источник
Это будет результатом слияния кодовых баз PDW, Azure и коробочной версии. Мы начнем видеть сообщения вроде этого или того, что вы не находитесь на компьютере Azure, когда пытаетесь делать вещи, выпущенные только в Azure.
Что касается вопроса Мартина о том, что такое расширения PDW, то это будут те особенности языка T-SQL, которые реализованы только в продукте Parallel Data Warehouse (PDW).
источник
ORDER BY
с оконными агрегатами нельзя включить в SQL Server 2008. Функция не была «извлечена», она не была выпущена для не-PDW SQL Server до выпуска 2012 года.Ответ на это как элемент сообщения об ошибке. Как сказал @MartinSmith выше,
Это официально упоминается здесь SQL Server 2008 R2 - предложение OVER (Transact-SQL)
Еще более значительным является словоблудие в SQL Server 2012 - предложение OVER (Transact-SQL)
Таким образом, похоже, что он, безусловно , не доступен в 2008 году - хотя это сообщение об ошибке является действительно неясным способом сказать «не реализовано» , а в 2012 году похоже, что официальная позиция Microsoft состоит в том, что ваш пробег может отличаться .
источник