Опитвали ли сте да поставите точка и запетая пред вашия With изявление? (напр. ;With q As )
Някои общи бележки:
- Трябва да изпълните това в заявка, а не в дизайнера. Изглежда, че сте поправили това.
- Избройте колоните, вместо да използвате
*. Т.е. в примера по-долу заменете Col1, Col2 с действителните колони, които искате да имат префикс от таблицата, откъдето идват. - Поставете
use DatabaseNameв горната част на вашия скрипт, последвано от прекъсване на ред, последвано отGO, последвано от друго прекъсване на реда. - Ако единственият израз преди
Withоператорът еGOмежду вашатаuseизявлението и заявката, тогава не е необходима точка и запетая, тъй като това е първото изявление в пакета.
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