sql >> Base de Datos >  >> RDS >> Sqlserver

¿No hay soporte para OVER en MS SQL Server 2005?

¿Ha intentado anteponer un punto y coma delante de su With? ¿declaración? (por ejemplo, ;With q As )

Algunas notas generales:

  1. Debe ejecutar esto en una consulta, no en el diseñador. Parece que lo has solucionado.
  2. Enumerar las columnas en lugar de usar * . Es decir, en el siguiente ejemplo, reemplace Col1, Col2 con las columnas reales que desea que tengan el prefijo de la tabla de donde provienen.
  3. Poner use DatabaseName en la parte superior de su script seguido de un salto de línea, seguido de GO , seguido de otro salto de línea.
  4. Si la única afirmación anterior a With declaración es el GO entre su use declaración y la consulta, entonces no es necesario punto y coma ya que es la primera declaración en el lote.

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