Гнездо с ошибками выписки
Я пытаюсь использовать операторы WITH и получаю ошибки, и я надеюсь, что кто-то может помочь. Я запрашиваю базу данных зарегистрированных звонков; В таблице с данными о вызове нет сведений о вызывающем абоненте, который находится в отдельной таблице, и с этим вызовом может быть связан один (или более) вызывающих абонентов, или ни одного - в этом случае будет указано название компании. И я все еще хочу детали звонка, даже когда их нет, но если у нас есть эти детали, я хочу их; Мне нужно искать "AD-User" в строке во второй таблице, где совпадают номера вызовов.
Я получил это:
WITH AllCompanysCalls as
(
SELECT [RSUPDESK].[dbo].[Request].ID as CallID
,[dbo].[vw_Associations].Item
FROM [RSUPDESK].[dbo].[Request]
Inner Join [RSUPDESK].[dbo].[vw_Associations] ON [RSUPDESK].[dbo].[Request].ID = [RSUPDESK].[dbo].[vw_Associations].RQID
WHERE ([RSUPDESK].[dbo].[vw_Associations].PrimaryAssociation = '1' and [RSUPDESK].[dbo].[vw_Associations].Item = 'Bob The Builder')
AND DATEPART(m, LoggedDate) = DATEPART(m, DATEADD(m, -1, getdate()))
AND DATEPART(yyyy, LoggedDate) = DATEPART(yyyy, DATEADD(m, -1, getdate()))
)
,
WITH CallsWithUser AS
(
SELECT CallID
,[vw_Associations].[Item] as Username
,[vw_Associations].Style
FROM AllCompanysCalls Join [RSUPDESK].[dbo].[vw_Associations] ON AllCompanysCalls.CallID = [RSUPDESK].[dbo].[vw_Associations].RQID
WHERE [RSUPDESK].[dbo].[vw_Associations].Style = 'Contact'
)
,
SELECT AllCompanysCalls.CallID
,CallsWithUser.[vw_Associations].[Item] as Username
FROM AllCompanysCalls LEFT Join CallsWithUser ON AllCompanysCalls.CallID = CallsWithUser.CallID
Извините, это беспорядок, но я не вижу другого способа сделать это.
Это ошибка, которую я получаю:
Сообщение 156, уровень 15, состояние 1, строка 76 Неверный синтаксис рядом с ключевым словом "WITH". Сообщение 319, уровень 15, состояние 1, строка 76 Неправильный синтаксис рядом с ключевым словом "с". Если этот оператор является общим табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой. Сообщение 102, Уровень 15, Состояние 1, Строка 145 Неверный синтаксис рядом с ','.
Может кто-нибудь помочь, пожалуйста? это явно связано с наличием нескольких операторов, а второе использует результаты первого, но я не могу разобраться.