Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Keine Unterstützung für OVER in MS SQL Server 2005?

Haben Sie versucht, Ihrem With ein Semikolon voranzustellen? Erklärung? (z. B. ;With q As )

Einige allgemeine Hinweise:

  1. Sie müssen dies in einer Abfrage ausführen, nicht im Designer. Es hört sich so an, als hätten Sie das behoben.
  2. Zählen Sie die Spalten auf, anstatt * zu verwenden . Das heißt, im folgenden Beispiel ersetzen Sie Col1, Col2 durch die tatsächlichen Spalten, die Sie mit der Tabelle voranstellen möchten, aus der sie stammen.
  3. Setzen Sie use DatabaseName am Anfang Ihres Skripts, gefolgt von einem Zeilenumbruch, gefolgt von GO , gefolgt von einem weiteren Zeilenumbruch.
  4. If die einzige Anweisung vor dem With Anweisung ist das GO zwischen Ihrer use -Anweisung und der Abfrage, dann ist kein Semikolon erforderlich, da es die erste Anweisung im Stapel ist.

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