我有一个包含两个表的数据库:一个表用于客户订单,另一个用于客户退货。这两个表都有一个客户id列和一个合计列。
我正试图制作一个数据透视表,从总订单中减去总退货。问题是,当返回的行数超过1行时,每行都会调用SUM函数。
这是我正在使用的查询。
SELECT
( (Sum(CASE WHEN MONTH(order_date) = 3 THEN orders.total END) -
(Sum(CASE WHEN MONTH(return_date) = 3 THEN returns.total END) ) AS May
FROM orders
INNER JOIN returns ON orders.customer = returns.customer
WHERE customer = ?
这可能与分组有关吗?
这是我使用的最后一个查询:
SELECT
( (Sum(CASE WHEN MONTH(order_date) = 1 THEN total END) / 100) -
(SELECT COALESCE( ( SUM(total) / 100), 0) FROM returns
WHERE customer = orders.customer AND MONTH(return_date) = 1) ) , 0) AS May
FROM orders
WHERE customer = ?
它使用COALESCE来说明没有回报的可能性。