Синтаксис кажется нормально - так должен работать против SQL Server 2012.
Там две возможности, которые она до сих пор не действует:
вы бегаете SQL Server 2012 Management Studio, но против старого SQL Server двигатель версия - вы можете проверить это, выполнив:
SELECT @@VERSION
Вы работаете с базой данных, которая имеет уровень совместимости и, таким образом, не поддерживает функции SQL Server 2012, такие как оконная функция OVER (ORDER BY...)
.
Узнайте, запустив это против вашей базы данных:
SELECT name, compatibility_level
FROM sys.databases
WHERE database_id = DB_ID()
Уровень совместимости должен быть для SQL Server 2012 - если это ниже, что вы можете изменить это.
Update:, так как вы определили, что уровень совместимости этой базы данных (= SQL Server 2000), вам необходимо изменить, что в более поздней версии. Для того, чтобы обновить базу данных с уровнем совместимости (SQL Server 2008 R2), который должен поддерживать эти функции окна, используйте следующую команду:
ALTER DATABASE (YourDatabaseName)
SET COMPATIBILITY_LEVEL = 105;
и вы сделали. Теперь ваш запрос должен работать нормально.
У меня нет экземпляра 2012 года, но он подтвердил, что это отлично работает на SQL 2014 (12.0.4213.0), если 'AccountCodeID' является столбцом' INT', как я предполагал. +1 – 3N1GM4
Я побежал SELECT @@ VERSION и получил Microsoft SQL Server 2008 R2 (SP2) - 10.50.4033.0 (X64) \t Jul 9 2014 16:04:25 \t Copyright (C) Microsoft Corporation \t Enterprise Edition (64 -бит) в Windows NT 6.1 (сборка 7601: с пакетом обновления 1), но когда я перехожу к «О», логотип является SQL Server 2012. Второй qry дает уровень совместимости 80 –
@DasalKalubowila: уровень совместимости ** 80 ** - это SQL Сервер ** 2000 **, который ** определенно ** не поддерживал эти функции окна! Обновите уровень совместимости вашей базы данных до 100 для SQL Server 2008, и он должен работать. –