我有一个相当复杂的查询,我已经简化了这里,试图让它变得可以理解。
在下面的示例中,我尝试获取两种不同产品的SUM
销售额。当我按照前两列单独检索SUM
时,它们会正确计算。
但是,在将两个SUM
查询一起添加(在第三列中)时,如果产品Y已售出,但 NOT 产品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
答案 0 :(得分:1)
当X没有销售时,您的选择结果将为NULL。 将NULL添加到Y的销售将导致NULL。
SELECT SUM(IFNULL(product_x_sales.price, 0)) <-- = NULL
将其改为此
SELECT IFNULL(SUM(IFNULL(product_x_sales.price, 0)), 0)