我有一个包含4列的orders表。有三个重要的栏目-
日期排序订单状态--“已完成”或“已退回”订单--输入的订单数量
我想找出每个月完成的订单的总和,并减去退回的订单,作为每月剩余的总数。这是我到目前为止的代码:
SELECT date_trunc('month', dateordered), SUM(orders) - (
SELECT SUM(orders)
FROM c_orders
WHERE orderstatus = 'returned'
)
FROM c_orders
WHERE orderstatus = 'complete'
GROUP BY 1我知道查询的主体可以正确地按月拉取已完成的订单。问题是子查询-我不知道如何按月指定退货订单的总和。因此,现在这个查询正在减去整个数据集中所有返回订单的总和,而没有指定月份。
有没有更好的方法来做这件事?提亚
发布于 2017-07-20 22:24:58
我想这就是你想要的:
SELECT date_trunc('month', dateordered) as yyyymm,
SUM(CASE WHEN orderstatus = 'complete' THEN orders
WHEN orderstatus = 'returned' THEN - orders
ELSE 0
END)
FROM c_orders
GROUP BY yyyymm
ORDER BY yyyymm;https://stackoverflow.com/questions/45217458
复制相似问题