根据错误信息,你的SQL查询中包含了一个聚合函数(sum)和其他非聚合列(Reservation),这在没有使用GROUP BY子句的聚合查询中是不允许的。

要解决这个问题,你有两个选择:

  1. 如果你需要对非聚合列进行分组并显示每个分组的结果,你需要在SELECT语句中添加GROUP BY子句,将非聚合列添加到GROUP BY子句中。例如:
SELECT
    ManufacturingOrder,
    Material,
    Reservation,
    ReservationItem,
    sum(RequiredQuantity),
    ManufacturingOrderOperation,
    BillOfMaterialItemNumber,
    GoodsMovementType,
    MaterialGroup 
FROM
    ods_productionordercomponent 
WHERE
    ManufacturingOrder ='1000098000'
    AND Material = '068840280104007'
GROUP BY
    ManufacturingOrder,
    Material,
    Reservation,
    ReservationItem,
    ManufacturingOrderOperation,
    BillOfMaterialItemNumber,
    GoodsMovementType,
    MaterialGroup;
  1. 如果你只需要显示聚合结果,并不需要对非聚合列进行分组,你可以修改sql_mode参数,将其设置为不包含only_full_group_by。例如:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
SELECT
    ManufacturingOrder,
    Material,
    Reservation,
    ReservationItem,
    sum(RequiredQuantity),
    ManufacturingOrderOperation,
    BillOfMaterialItemNumber,
    GoodsMovementType,
    MaterialGroup 
FROM
    ods_productionordercomponent 
WHERE
    ManufacturingOrder ='1000098000'
    AND Material = '068840280104007';

请注意,修改sql_mode参数可能会影响其他查询的行为,所以请在修改之前谨慎评估

SELECT	ManufacturingOrder	Material	Reservation	ReservationItem	sumRequiredQuantity	ManufacturingOrderOperation	BillOfMaterialItemNumber	GoodsMovementType	MaterialGroup FROM	ods_productionordercomponen

原文地址: https://www.cveoy.top/t/topic/iJxy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录