Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Nessun supporto per OVER in MS SQL Server 2005?

Hai provato ad anteporre un punto e virgola davanti al tuo With dichiarazione? (es. ;With q As )

Alcune note generali:

  1. Devi eseguirlo in una query non nel designer. Sembra che tu l'abbia risolto.
  2. Enumera le colonne invece di usare * . Ad esempio, nell'esempio seguente sostituisci Col1, Col2 con le colonne effettive che desideri siano precedute dalla tabella da cui provengono.
  3. Inserisci use DatabaseName nella parte superiore dello script seguito da un'interruzione di riga, seguita da GO , seguito da un'altra interruzione di riga.
  4. Se l'unica istruzione precedente a With l'istruzione è il GO tra il tuo use istruzione e la query, quindi non è necessario alcun punto e virgola poiché è la prima istruzione nel 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