如何在SQL中相互减去两列(PostgresSQL)

时间:2017-07-20 14:21:05

标签: sql postgresql

我有一个包含4列的订单表。有三个重要的专栏 -

dateordered orderstatus - “已完成”或“已退回” 订单 - 放入订单的数量

我想查找每个月已完成订单的总和,并减去每月剩余总额的退回订单。到目前为止,这是我的代码:

Project
    server.js (back-end node API)
    package.json (concurrently library and command added here)
    public (angular front-end app)
        src
        .angular-cli.json
        package.json (npm start updated to use proxy)
        proxy.conf.json (proxy configuration goes here)

我知道查询的主体正常工作以按月提取已完成的订单。问题是子查询 - 我不知道如何按月指定返回订单的总和。所以现在这个查询在没有指定月份的情况下减去整个数据集中所有返回订单的总和。

有更好的方法吗? TIA

1 个答案:

答案 0 :(得分:4)

我认为这就是你想要的:

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;