TSQL Msg 1013 «Используйте имена корреляций, чтобы различать их».

Я просмотрел множество предложений SET DATEFORMAT DMY DECLARE @ Source DATETIME = '01 / 01/2001 ' DECLARE @ Destenaition DATETIME = '01 / 01/2020 ' SELECT ST . [ Группа ], ST . Магазин , СУМ ( св . Куплено ) А.С. Итого , ЧГ . Взимается ОТ ( ВЫБЕРИТЕ Личных . Группы . [ Имя ] КАК «Группа» , Карты . Покупки . PersonalID , Personals . Реестр . [ Имя ], SUM ( Cards . VPurchases . Ammont ) AS Закуплено , Карты . Покупки . ShopName AS Магазин ОТ Карт . vPurchases INNER JOIN Personals . Реестр ПО Знакомства . Реестр . Id = карты . Покупки . PersonalID INNER JOIN Personals . Группы ПО Personals . Реестр . [ Группа ] = Знакомства . Группы . Id INNER JOIN Знакомства . Группы ПО Personals . Группы . Id = CHG . GroupID ГДЕ Карты . vПокупки . [ TimeStamp ] > = @ Source AND Cards . vПокупки . [ TimeStamp ] <= @ Destenaition GROUP BY Карты . Покупки . PersonalID , Personals . Реестр . [ Имя ], Знакомства . Группы . [ Имя ], Карты . Покупки . ShopName ) ST , ( ВЫБОР PG . Id AS GroupID , SUM ( карты . VCharges . Сумма ) КАК Заряженный ОТ карты . VCharges ВНУТРЕННЕГО РЕГИСТРИРУЙТЕСЬ Personals . Реестр ПО Personals . Реестр . Id = Карта . VCharges . PersonalID ВНУТРЕННИЙ РЕГИСТРИРУЙТЕСЬ Personals . Группы AS PG ON Personals . Registry . [ Group ] = PG . Id WHERE Карты . VCharges . [ TimeStamp ] > = @ Source AND Cards . VCharges . [ TimeStamp ] <= @ Destenaition GROUP BY Personals . Groups . [ Name ]) AS CHG GROUP BY ST . Магазин , ST . [ Группа ] и не может понять, как решить эту проблему в течение последних двух часов.

Personals.Groups

И тогда я получаю эту ошибку:

Msg 1013, уровень 16, состояние 1, строка 6 Объекты "Personals.Groups" и " Personals INNER JOIN . Группы как PG1 " в предложении FROM имеют одинаковые открытые имена. Используйте имена корреляций, чтобы различать их.

Благодарю.

tsql,sql-server-2008,

4

Ответов: 1


10 принят

Вы используете таблицу Personals.Groupsдва раза в первом подзапросе. Если вы действительно хотите иметь таблицу, Personals.Groupsвам нужно дать им псевдоним, который вы затем используете вместо имен таблиц в остальной части запроса.

INNER JOIN Personals.Groups as PG2

а также

on

Если вам нужен только один, вы можете объединить onпредложения, чтобы использовать только один вместо.

INNER JOIN Personals.Groups 
  ON Personals.Registry.[Group] = Personals.Groups.Id and
     Personals.Groups.Id = CHG.GroupID
TSQL, SQL Server-2008,
Похожие вопросы