2

我想在第一列中有名称,但出现错误。当我让 P.name 出来时,查询有效,但我看不到玩家姓名。

现在我有以下查询:

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Playernr

提前感谢您的帮助

远野

4

3 回答 3

3

您应该将其添加到GROUP BY子句中。

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Name,P.Playernr
于 2013-11-12T12:53:29.020 回答
0

试试这个:

SELECT MAX(P.Name) as Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Playernr

或添加P.NameGroup BY

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Name,P.Playernr
于 2013-11-12T12:52:37.063 回答
0

使用时GROUP BY,只能投影分组列和聚合函数。删除投影列中的 P.Name 或在 GROUP BY 中添加 P.Name

SELECT P.Name, P.Playernr, SUM (F.Amount)
FROM FINES F
INNER JOIN PLAYERS P
ON F.Playernr = P.Playernr
GROUP BY  P.Playernr, P.Name

在其他 RDBMS 中,您的查询会产生错误。

考虑以下数据:

P.Playernr   P.Name
A         B
A         C
A         D

那么,P.Name 不在 GROUP BY 中,该值是在 SELECT P.Playernr 中产生的。因此,您必须使用聚合函数或在 GROUP BY 中添加 P.Name

于 2013-11-12T12:53:12.867 回答