sql >> Databasteknik >  >> RDS >> Sqlserver

Inget stöd för OVER i MS SQL Server 2005?

Har du testat att lägga ett semikolon framför din With påstående? (t.ex. ;With q As )

Några allmänna anmärkningar:

  1. Du måste köra detta i en fråga, inte designern. Det låter som att du har fixat det.
  2. Räkna upp kolumnerna istället för att använda * . Dvs i exemplet nedan ersätter du Col1, Col2 med de faktiska kolumner du vill ha prefixet av tabellen varifrån de kom.
  3. Ange use DatabaseName överst i ditt skript följt av en radbrytning, följt av GO , följt av ytterligare en radbrytning.
  4. Om den enda satsen före With uttalandet är GO mellan din use satsen och frågan, då behövs inget semikolon eftersom det är den första satsen i partiet.

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


  1. Exklusiv! Gå med oss ​​med vår gäst Michal Bar, Access Program Manager

  2. SQL Natural Join

  3. Hur tar man bort en unik begränsning i SQL?

  4. MySQL kontra PDO