Avez-vous essayé d'ajouter un point-virgule devant votre With déclaration? (ex. ;With q As )
Quelques remarques générales :
- Vous devez l'exécuter dans une requête et non dans le concepteur. Il semble que vous ayez résolu ce problème.
- Énumérer les colonnes au lieu d'utiliser
*. Par exemple, dans l'exemple ci-dessous, remplacez Col1, Col2 par les colonnes réelles que vous souhaitez préfixer par la table d'où elles proviennent. - Mettez
use DatabaseNameen haut de votre script suivi d'un saut de ligne, suivi deGO, suivi d'un autre saut de ligne. - Si la seule instruction précédant le
Withl'instruction est leGOentre votreuseet la requête, aucun point-virgule n'est nécessaire puisqu'il s'agit de la première instruction du lot.
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