SQL - Когда будет использоваться пустое предложение OVER? - PullRequest
5 голосов
/ 28 июля 2010

Я анализирую некоторый код, который использует пустые предложения OVER в конкурсе Count ().

Пример:

SELECT 
        ROW_NUMBER() OVER (ORDER BY Priority DESC) AS RowID,
        CAST((COUNT(*) OVER() / @pagesize) AS Int) AS TotalPages,

Я пытаюсь понять, почему пустое предложение OVERиспользуется здесь.

Есть другие стандартные элементы выбора ниже этих двух строк, которые я перечислил выше, и когда я удаляю пустое предложение OVER из второй строки TotalPages, я получаю такие ошибки:

Column 'TableA.Priority' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Как только я вернул OVER (), ошибка исчезла.

Мое понимание предложения OVER очень ограничено ... Мне кажется, что я понимаю, что происходит в RowIDлиния ... но линия TotalPages просто сбивает меня с толку.

1 Ответ

8 голосов
/ 28 июля 2010

OVER () является частью аналитической функции и определяет разделы в вашем наборе записей.OVER () - это только один раздел, который применяется ко всему набору данных

, т.е. COUNT (*) OVER () будет возвращать в каждой строке количество записей в вашем наборе данных.

посмотрите на это http://msdn.microsoft.com/en-us/library/ms189461.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...