Почему ROW_NUMBER () не распознан в SQL Server 2008?

Думайте о включении, как имеет отношения. Автомобиль "имеет" механизм, у человека "есть" имя, и т.д.

Думают о наследовании, как отношения. Автомобиль "является" механизмом, человек "является" млекопитающим, и т.д.

я не беру кредита на этот подход. Я взял его прямо от 110-секундного Выпуска Кода, Завершенного Steve McConnell , Раздел 6.3 .

8
задан Dominic Zukiewicz 5 October 2011 в 12:31
поделиться

3 ответа

Похоже, вы используете неправильный синтаксис. Вот пример использования базы данных AdventureWorks.

select 
    row_number() over(order by Name),   
    Name
from HumanResources.Department
27
ответ дан 5 December 2019 в 04:46
поделиться

Расширение двух других ...

Я пробовал та же самая команда в SQL 2005 с двумя базами данных.

Для обоих уровней совместимости 80 и 90 ошибка следующая:

Msg 1035, Level 15, State 10, Line 2
Incorrect syntax near 'ROW_NUMBER', expected 'OVER'.

Я могу сгенерировать эту ошибку только в окне SQL 2000:

Msg 195, Level 15, State 10, Line 2
'ROW_NUMBER' is not a recognized function name.

Что делает SELECT @@ version говорите? Я на 100% уверен, что вы используете ту версию, которую ожидаете ...

Другая моя мысль - это уровень совместимости 65, который не может быть явно установлен в SQL Server 2005 и выше, кажется. И у меня нет никаких старых баз данных для тестирования.

10
ответ дан 5 December 2019 в 04:46
поделиться

Проверьте совместимость вашей базы данных; убедитесь, что установлено значение 90 или выше.

Похоже, здесь есть как минимум 2 несоответствия.

  • Синтаксис в вашем вопросе неверен, но не приведет к ошибке нераспознанной функции.
  • SQL 2005 и 2008 поддерживают ключевое слово / команду ROW_NUMBER OVER () . Возможно, вы используете SQL 2008 Management Studio для подключения к машине SQL 2000? Дважды проверьте с помощью SELECT @@ Version , что ваша БД действительно является БД SQL 2008.
4
ответ дан 5 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: