Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Não há suporte para OVER no MS SQL Server 2005?


Você já tentou preceder um ponto e vírgula na frente de seu With demonstração? (por exemplo, ;With q As )

Algumas notas gerais:
  1. Você deve executar isso em uma consulta, não no designer. Parece que você corrigiu isso.
  2. Enumere as colunas em vez de usar * . Ou seja, no exemplo abaixo, substitua Col1, Col2 pelas colunas reais que você deseja prefixadas pela tabela de onde elas vieram.
  3. Coloque use DatabaseName no topo do seu script seguido por uma quebra de linha, seguido por GO , seguido por outra quebra de linha.
  4. Se a única instrução anterior a With instrução é o GO entre seu use instrução e a consulta, nenhum ponto e vírgula será necessário, pois é a primeira instrução do 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