我有一个4列的订单表。有三个重要的栏目-
已订购日期
orderstatus-要么“completed”要么“returned”
订单-输入的订单数
我想找出每个月已完成订单的总和,然后减去每月剩余订单的退货总额。到目前为止这是我的代码:
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
我知道查询的主体工作正常,可以按月提取完成的订单。问题是子查询-我不知道如何指定按月返回订单的总和。所以现在这个查询是减去整个数据集中所有返回订单的总和,而不指定月份。
有更好的办法吗?短暂性脑缺血发作
最佳答案
我想这就是你想要的:
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;