我看了很多建议,在过去的两个小时里不知道如何解决这个问题。
SET DATEFORMAT DMY
DECLARE @Source DATETIME = '01/01/2001'
DECLARE @Destenaition DATETIME = '01/01/2020'
SELECT ST.[Group],
ST.Shop,
SUM(ST.Purchased) AS Total,
CHG.Charged
FROM (SELECT Personals.Groups.[Name] AS 'Group',
Cards.vPurchases.PersonalID,
Personals.Registry.[Name],
SUM(Cards.vPurchases.Ammont) AS Purchased,
Cards.vPurchases.ShopName AS Shop
FROM Cards.vPurchases
INNER JOIN Personals.Registry
ON Personals.Registry.Id = Cards.vPurchases.PersonalID
INNER JOIN Personals.Groups
ON Personals.Registry.[Group] = Personals.Groups.Id
INNER JOIN Personals.Groups
ON Personals.Groups.Id = CHG.GroupID
WHERE Cards.vPurchases.[TimeStamp] >= @Source
AND Cards.vPurchases.[TimeStamp] <= @Destenaition
GROUP BY Cards.vPurchases.PersonalID,
Personals.Registry.[Name],
Personals.Groups.[Name],
Cards.vPurchases.ShopName) ST,
(SELECT PG.Id AS GroupID,
SUM(Cards.vCharges.Amount) AS Charged
FROM Cards.vCharges
INNER JOIN Personals.Registry
ON Personals.Registry.Id = Cards.vCharges.PersonalID
INNER JOIN Personals.Groups AS PG
ON Personals.Registry.[Group] = PG.Id
WHERE Cards.vCharges.[TimeStamp] >= @Source
AND Cards.vCharges.[TimeStamp] <= @Destenaition
GROUP BY Personals.Groups.[Name]) AS CHG
GROUP BY ST.Shop,
ST.[Group]
然后我得到这个错误:
消息 1013,级别 16,状态 1,第 6 行 对象“Personals.Groups”和
FROM 子句中的“Personals.Groups”具有相同的公开名称。使用
相关名称来区分它们。
Thanks.
您正在使用该表Personals.Groups
在第一个子查询中出现两次。
如果你真的想要这张桌子Personals.Groups
您需要为它们提供一个别名,然后在查询的其余部分中使用该别名来代替表名。
INNER JOIN Personals.Groups as PG1
and
INNER JOIN Personals.Groups as PG2
如果您只需要一个,您可以将on
只使用一个子句来代替。
INNER JOIN Personals.Groups
ON Personals.Registry.[Group] = Personals.Groups.Id and
Personals.Groups.Id = CHG.GroupID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)