高级查询PostgreSQL

nhhxz33t  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(72)

有这个问题,我有一个销售产品的历史表,现在的问题是当我设置一个日期范围过滤器,例如显示所有产品,但只显示数量销售在一周内每个产品,否则显示0。
我想用一个case语句,但是这个case总是用0覆盖返回结果。

(case when (stock_move.date between '1/11/2017' and '20/11/2017') then
   round(sum(stock_move.product_quantity))
else 
   0
end) as sell

我希望你们能告诉我我失败的地方,并帮助我:),谢谢!

rdlzhqv9

rdlzhqv91#

如果我们在select查询中使用聚合函数(sum),那么我们必须在group by子句中提到列名;只有这样它才执行查询。

select (case when (stock_move.date between '1/11/2017' and '20/11/2017') then
   round(sum(stock_move.product_quantity))
else 
   0
end) as sell from table_name
group by stock_move.date

相关问题