我一直在MS Access中遇到问题。我想添加一个collumn但我收到了一个错误。 “您的查询不包含指定的表达式'BorgA'作为聚合函数的一部分。”
我正在使用此查询:
SELECT
SUM(A.TotaalPrijs) As TotaalPrijs,
A.AutoNR,
A.AutoKlasse,
MAX(A.Factuur.Dagen) as Dagen,
A.Prijzen.dag125KM as PrijsPerDag,
A.Prijzen.ExtraKM As PrijsPerExtraKM,
A.Factuur.FactuurNR,
A.Factuur.KlantNR,
A.Factuur.Begindatum,
A.Factuur.Einddatum,
A.Factuur.Borg,
Gegevens.voorletters,
Gegevens.tussenvoegsel,
Gegevens.achternaam,
Gegevens.straatnaam,
Gegevens.huisNR,
Gegevens.Postcode,
Gegevens.rekeningNR,
Gegevens.Plaats,
A.KMteVEEL,
B.BorgA
FROM
(SELECT Factuur.Dagen, Factuur.AutoNR AS carNR, autos.AutoNR, autos.Klasse AS AutoKlasse, Prijzen.Klasse, Prijzen.dag125KM, Prijzen.ExtraKM, (prijzen.dag125KM*Factuur.Dagen) AS MinPrijs, Factuur.FactuurNR, Factuur.KlantNR, Factuur.Begindatum, Factuur.Einddatum, Factuur.Borg, (KMteVEEL*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen]) AS TotaalPrijs, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, IIf([Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125) < 0, 0, [Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125)) AS KMteVEEL
FROM autos, Factuur, Prijzen, Gegevens
WHERE (((Factuur.AutoNR)=Autos.AutoNR) And ((autos.Klasse)=Prijzen.Klasse) And ((Factuur.KlantNR)=Gegevens.KlantNR))
) AS A,
(SELECT Prijzen.Borg as BorgA
FROM ((Prijzen
INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse)
INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR)) AS B
GROUP BY
A.AutoNR, A.AutoKlasse, A.Prijzen.dag125KM, A.Prijzen.ExtraKM, A.Factuur.FactuurNR, A.Factuur.KlantNR, A.Factuur.Begindatum, A.Factuur.Einddatum, A.Factuur.Borg, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, A.KMteVEEL;
在我添加B.BorgA
和
(SELECT Prijzen.Borg as BorgA
FROM ((Prijzen
INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse)
INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR)) AS B
部分。 有什么方法可以让它运作? 我已经尝试在GROUP BY中添加B.BorgA,但这并没有给我正确的结果。 如何让它运作的任何其他方式?
谢谢,
答案 0 :(得分:0)
由于您没有条件限制A
子查询和B
子查询之间的联接,因此您获得了笛卡尔积。您的子查询已加入Prijzen
,因此只需将其添加到SELECT
和GROUP BY
列表中即可。还有其他清理工作:
SELECT
SUM(TotaalPrijs) As TotaalPrijs,
AutoNR,
AutoKlasse,
MAX(Dagen) as Dagen,
dag125KM as PrijsPerDag,
ExtraKM As PrijsPerExtraKM,
FactuurNR,
KlantNR,
Begindatum,
Einddatum,
Borg,
voorletters,
tussenvoegsel,
achternaam,
straatnaam,
huisNR,
Postcode,
rekeningNR,
Plaats,
KMteVEEL,
BorgA
FROM (SELECT p.Borg as BorgA,f.Dagen, f.AutoNR AS carNR, a.AutoNR, a.Klasse AS AutoKlasse, p.Klasse, p.dag125KM, p.ExtraKM, (p.dag125KM*f.Dagen) AS MinPrijs, f.FactuurNR, f.KlantNR, f.Begindatum, f.Einddatum, f.Borg, (KMteVEEL*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen]) AS TotaalPrijs, g.voorletters, g.tussenvoegsel, g.achternaam, g.straatnaam, g.huisNR, g.Postcode, g.rekeningNR, g.Plaats, IIf([Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125) < 0, 0, [Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125)) AS KMteVEEL
FROM autos a
INNER JOIN Factuur f ON a.AutoNR = f.AutoNR
INNER JOIN Prijzen p ON a.Klasse = p.Klasse
INNER JOIN Gegevens g ON f.KlantNR = g.KlantNR
) AS sub
GROUP BY AutoNR,
AutoKlasse,
dag125KM,
ExtraKM,
FactuurNR,
KlantNR,
Begindatum,
Einddatum,
Borg,
voorletters,
tussenvoegsel,
achternaam,
straatnaam,
huisNR,
Postcode,
rekeningNR,
Plaats,
KMteVEEL,
BorgA
我还删除了您过时的JOIN
语法并添加了别名。子查询甚至不是必需的,但如果你删除它,你必须适当地更改别名。
答案 1 :(得分:0)
您已在选择列表中选择了非汇总字段B.BorgA
,但您错过了将其添加到B.BorgA
中的group by
Select ...
....
GROUP BY A.AutoNR,
A.AutoKlasse,
A.Prijzen.dag125KM,
A.Prijzen.ExtraKM,
A.Factuur.FactuurNR,
A.Factuur.KlantNR,
A.Factuur.Begindatum,
A.Factuur.Einddatum,
A.Factuur.Borg,
Gegevens.voorletters,
Gegevens.tussenvoegsel,
Gegevens.achternaam,
Gegevens.straatnaam,
Gegevens.huisNR,
Gegevens.Postcode,
Gegevens.rekeningNR,
Gegevens.Plaats,
A.KMteVEEL,
B.BorgA; -- Missed