访问 SQL GROUP BY 问题(例如 tbl_Produktion.ID 不是聚合函数的一部分)

Access SQL GROUP BY problem (eg. tbl_Produktion.ID not part of the aggregation-function)

我想按两列分组,但是 MS Access 不允许我这样做。

这是我写的代码:

SELECT 
    tbl_Produktion.Datum, tbl_Produktion.Schichtleiter,     
    tbl_Produktion.ProduktionsID, tbl_Produktion.Linie,  
    tbl_Produktion.Schicht, tbl_Produktion.Anzahl_Schichten_P, 
    tbl_Produktion.Schichtteam, tbl_Produktion.Von, tbl_Produktion.Bis, 
    tbl_Produktion.Pause, tbl_Produktion.Kunde, tbl_Produktion.TeileNr, 
    tbl_Produktion.FormNr, tbl_Produktion.LabyNr, 
    SUM(tbl_Produktion.Stueckzahl_Prod), 
    tbl_Produktion.Stueckzahl_Ausschuss, tbl_Produktion.Ausschussgrund, 
    tbl_Produktion.Kommentar, tbl_Produktion.StvSchichtleiter,   
    tbl_Produktion.Von2, tbl_Produktion.Bis2, tbl_Produktion.Pause2, 
    tbl_Produktion.Arbeiter3, tbl_Produktion.Von3, tbl_Produktion.Bis3,   
    tbl_Produktion.Pause3, tbl_Produktion.Arbeiter4, 
    tbl_Produktion.Von4, tbl_Produktion.Bis4, tbl_Produktion.Pause4, 
    tbl_Produktion.Leiharbeiter5, tbl_Produktion.Von5, 
    tbl_Produktion.Bis5, tbl_Produktion.Pause5, 
    tbl_Produktion.Leiharbeiter6, tbl_Produktion.Von6, 
    tbl_Produktion.Bis6, tbl_Produktion.Pause6, tbl_Produktion.Muster
FROM 
    tbl_Personal 
INNER JOIN 
    tbl_Produktion ON tbl_Personal.PersID = tbl_Produktion.Schichtleiter
GROUP BY  
    tbl_Produktion.Datum, tbl_Produktion.Schichtleiter;

当我按所有列对其进行分组时它起作用,但不是这样。

错误消息说其余的列不是聚合函数的一部分(尽我所能从德语翻译成英语)。

PS.: 我还需要“tbl_Produktion.Stueckzahl_Prod”的总和,因此我尝试使用 SUM 函数(还不能尝试)。

如果您在 select 子句中使用聚合函数,则必须 group by 您要 select 的每一列都不是聚合。如果您出于某种原因不想这样做(也许它会以您不希望的方式改变聚合的输出),您要么必须考虑要使用的聚合(选择一个值。平均值?最大值?最小值? ) 或者只做两个选择,一个用于聚合,一个用于非聚合。但是,然后,您必须决定如何获取对聚合有意义的非聚合字段(或者我想将它们全部显示在 table 中?)

您是否尝试过类似的方法?

SELECT 
    tbl_Produktion.Datum, tbl_Produktion.Schichtleiter,     
    MAX(tbl_Produktion.ProduktionsID), MAX(tbl_Produktion.Linie),  
    MAX(tbl_Produktion.Schicht), MAX(tbl_Produktion.Anzahl_Schichten_P), 
    MAX(tbl_Produktion.Schichtteam), MAX(tbl_Produktion.Von), MAX(tbl_Produktion.Bis), 
    SUM(tbl_Produktion.Stueckzahl_Prod)
FROM
    tbl_Personal 
INNER JOIN 
    tbl_Produktion ON tbl_Personal.PersID = tbl_Produktion.Schichtleiter
GROUP BY  
    tbl_Produktion.Datum, tbl_Produktion.Schichtleiter;

除了您在 GROUP BY 中指定的两项和您需要 SUM 的一项之外,我对所有数据都使用了 MAX 函数。为了开始,我冒昧地省略了您的大量数据。

事实证明,当数据项在每个组中都是唯一的时,使用 MAX 函数是一种方便的解决方法。我们无法知道您的数据或您的 itent,因此我们无法告诉您 MAX 是否会产生您需要的结果。