代码之家  ›  专栏  ›  技术社区  ›  Simon

SQL选择联接表的总和

  •  0
  • Simon  · 技术社区  · 1 年前

    我有两张桌子。工作和零件。一份工作可以包含多个部分。

    我想列出所有的工作,然后一列显示该工作的部分总和。

    我的代码(在火鸟中)如下。我刚刚得到错误-选择列表中的表达式无效(不包含在聚合函数或GROUP BY子句中)。

    非常感谢。

    SELECT J.ID, J.REF, J.CUST, J.DATEADDED, Sum(P.QTYREQ)
    FROM JOBS J
    Join PARTS P 
        on J.ID = P.JOBID 
    Group by J.ID
    
    3 回复  |  直到 1 年前
        1
  •  1
  •   Vman    1 年前

    选择列表中的列应作为的一部分 group by 或者 aggregatefunction 。请阅读此处以更好地理解 https://www.sqlshack.com/an-overview-of-the-sql-group-by-clause/

        2
  •  -1
  •   Ignacio Amores    1 年前

    当您将SUM()与其他元素一起放入Select部分时,您需要指定所有非聚合元素的分组方式。因此:

    SELECT J.ID, J.REF, J.CUST, J.DATEADDED, SUM(P.QTYREQ) AS TotalParts 
    FROM JOBS J 
    JOIN PARTS P ON J.ID = P.JOBID 
    GROUP BY J.ID, J.REF, J.CUST, J.DATEADDED;
    
        3
  •  -1
  •   FrankDexDevs    1 年前

    当您使用聚合函数(如 SUM ),您需要在 GROUP BY 条款在您的情况下,中的所有列 SELECT 列表和未聚合的需要成为的一部分 分组依据 条款如下所述:

    SELECT J.ID, J.REF, J.CUST, J.DATEADDED,SUM(P.QTYREQ) AS TotalParts
    FROM JOBS J
    JOIN PARTS P 
    ON J.ID = P.JOBID 
    GROUP BY J.ID, J.REF, J.CUST, J.DATEADDED
    

    这将确保不属于的所有列 总和 函数包含在中 分组依据 条款希望这能解决你的问题。

    推荐文章