OVERI am getting an error when trying to run a query in MS SQL Server Management Studio. We use MS SQL Server 2005 on a windows 2003 server.
Here is the query:
The documentation for SQL Server 2005 says that OVER
is certainly supported.
The problem is that the editor window doesn't support it. See if you can close all the panes other than SQL and results view to make the error go away.
Check the compatibility level on the particular database
There is some more detail @ http://msdn.microsoft.com/en-us/library/ms178653(v=SQL.90).aspx
If the compatibility level is less than 90, then new features, like the OVER clause, available only in SQL 2005, are turned off.
Have you tried prepending a semicolon in front of your With
statement? (e.g. ;With q As
)
Some general notes:
*
. I.e., in the example below replace Col1, Col2 with the actual columns you want prefixed by the table from whence they came.use DatabaseName
at the top of your script followed by a line break, followed by GO
, followed by another line-break.With
statement is the GO
between your use
statement and the query, then no semicolon is necessary since it is the first statement in the batch.use DatabaseName GO WITH q AS ( SELECT TableName.Col1, TableName.Col2,... , ROW_NUMBER() OVER (PARTITION BY dbo.[1_MAIN - Contacts].Contact_ID ORDER BY dbo.[1_MAIN - Contacts].Contact_ID ) AS rn FROM dbo.[1_MAIN - Contacts] INNER JOIN dbo.Referral ON dbo.[1_MAIN - Contacts].Contact_ID = dbo.Referral.Referral_ID INNER JOIN dbo.prov_training_records ON dbo.[1_MAIN - Contacts].Contact_ID = dbo.prov_training_records.Contact_ID LEFT OUTER JOIN dbo.Resource_Center ON dbo.[1_MAIN - Contacts].Contact_ID = dbo.Resource_Center.Contact_ID FULL OUTER JOIN dbo.Providers ON dbo.[1_MAIN - Contacts].Contact_ID = dbo.Providers.Contact_ID ) SELECT * FROM q
The problem is that you are using the Query Designer GUI. Stop doing that. The Query Designer is rubbish. It's useless for any non-trivial query development. Type you queries in a Management Studio editor window.