我正在使用MariaDB,并且下面的子查询返回结果,但是如果我添加最后一行,则为“ GROUP BYlinked_item”,它将返回错误“检查与您的MySQL服务器版本相对应的手册”。

不确定为什么使用GROUP BY是错误。我需要从子查询结果中为每个唯一的linked_item输出一个合计-任何实现此结果的方法都可以。

此代码返回正确的两列子查询结果

SELECT linked_item, totalsum
FROM
(SELECT a.linked_item, a.total_actual_cost as totalsum FROM pl_detail a
WHERE a.total_actual_cost IS NOT NULL
UNION
SELECT b.linked_item, (b.number_units*b.cost_per_unit) as totalsum
FROM pl_detail b
WHERE b.total_actual_cost IS NULL) t


添加此行时出错:

GROUP BY linked_item

最佳答案

在您的SELECT中使用SUM(或另一个聚合函数)

SELECT linked_item, SUM(totalsum) as TotalSum
FROM
(SELECT a.linked_item, a.total_actual_cost as totalsum FROM pl_detail a
WHERE a.total_actual_cost IS NOT NULL
UNION
SELECT b.linked_item, (b.number_units*b.cost_per_unit) as totalsum
FROM pl_detail b
WHERE b.total_actual_cost IS NULL) t
GROUP BY linked_item


所有列都必须是集合函数或GROUP BY子句中的列

10-06 05:41