Sql 基于布尔列的条件和
我正在使用来构建图表:Sql 基于布尔列的条件和,sql,ruby-on-rails,postgresql,activerecord,rails-activerecord,Sql,Ruby On Rails,Postgresql,Activerecord,Rails Activerecord,我正在使用来构建图表: line_chart @product.stocks.group_by_date(:date).sum(:quantity) 这工作正常,但我得到了错误的数据,因为在stocks表中,quantity取决于中的另一列stock\u,它是布尔值 数量不能存储为负数,只支持正数 检索数量时我们检查中的库存值布尔值以计算产品数量之和 例子: 这里的数量是这样计算的:32+8-10=30 使用时 line_chart @product.stocks.group_by_dat
line_chart @product.stocks.group_by_date(:date).sum(:quantity)
这工作正常,但我得到了错误的数据,因为在stocks
表中,quantity
取决于中的另一列stock\u,它是布尔值
数量
不能存储为负数,只支持正数
- 检索
数量时
我们检查中的库存值
布尔值以计算产品数量之和
例子:
这里的数量是这样计算的:32+8-10=30
使用时
line_chart @product.stocks.group_by_date(:date).sum(:quantity)
2015年6月13日的工程量总和为40,这是错误的
我怎样才能修好它?比如:
line_chart @product.stocks.group_by_date(:date).sum { |s| s.stock_in? ? s.quantity : -1 * s.quantity }
您可以尝试以下操作:
@product.stocks.group_by_date(:date)
.sum("case when stock_in then quantity else -quantity end")
您可以尝试以下操作:
@product.stocks.group_by_date(:date)
.sum("case when stock_in then quantity else -quantity end")
如果要在PostgreSQL(而不是rails应用程序)中执行求和,可以执行以下操作:
line_chart @product.stocks
.group_by_date(:date)
.sum("quantity * (case stock_in when TRUE then 1 else -1 end)")
如果要在PostgreSQL(而不是rails应用程序)中执行求和,可以执行以下操作:
line_chart @product.stocks
.group_by_date(:date)
.sum("quantity * (case stock_in when TRUE then 1 else -1 end)")
你在使用什么数据库?MySQL?Postresql?您使用的是什么数据库?MySQL?Postresql?I'getting PG::GroupingError:ERROR:column“stocks.id”必须出现在GROUP BY子句中或用于聚合函数I'getting PG::GroupingError:ERROR:column“stocks.id”必须出现在GROUP BY子句中或用于聚合函数中。这属于数据库。这属于数据库端