我有一个相当复杂的查询,我在此处对其进行了简化,以尝试使其易于理解。
在下面的示例中,我尝试获取两种不同产品的销售额的SUM
。当我根据前两列单独检索 SUM
时,它们计算正确。
但是,当将两个 SUM
查询添加在一起时(在第三列中),如果产品 Y 已售出,但产品 X 已售出,则该值将返回完全空白。
有什么想法吗?
SELECT
(
SELECT SUM(IFNULL(product_x_sales.price, 0))
FROM sales AS product_x_sales
GROUP BY product_x_sales.customer_id
) AS "Total Sales of Product X",
SUM(IFNULL(product_y_sales.price, 0)) AS "Total Sales of Product Y",
(
SELECT SUM(IFNULL(product_x_sales.price, 0))
FROM sales AS product_x_sales
GROUP BY product_x_sales.customer_id
) + (
SUM(IFNULL(product_y_sales.price, 0))
) AS "Total Sales of Products X and Y"
FROM customers
JOIN sales AS product_y_sales ON customers.id = product_y_sales.customer_id
GROUP BY agents.id
最佳答案
当 X 没有销售额时,您的选择结果将为 NULL。 将 NULL 添加到 Y 的销售额将导致 NULL。
SELECT SUM(IFNULL(product_x_sales.price, 0)) <-- = NULL
改成这个
SELECT IFNULL(SUM(IFNULL(product_x_sales.price, 0)), 0)
关于mysql - 为什么 MySQL 不将这些列相加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883038/