【发布时间】:2013-10-02 01:12:06
【问题描述】:
我正在尝试生成一份报告以显示会计交易历史记录。在大多数情况下,AccountingTransaction 表中的每条记录显示一行。但有时我希望将某些交易作为一项交易显示给最终用户,而这些交易在幕后实际上是两笔会计交易。这是由于收入延迟和资金拆分造成的,因为此应用是基金会计应用。
如果我一一显示所有行,这些重复条目对用户来说看起来很奇怪,因为资金拆分和延期是“幕后”。所以我想将所有相关的事务汇总到屏幕上的一个显示行中。
我的查询现在使用 group by 对相关交易进行分组
@history = AccountingTransaction.where("customer_id in (?) AND no_download <> 1", customers_in_account).group(:transaction_type_id, :reference_id).order(:created_at)
当我循环遍历时,我可以根据需要对交易进行分组,但我正在努力解决如何显示组中所有记录的“信用”字段的总和。 (它只显示该组的第一条记录的信用)如果我在查询中添加.sum(:credit),当然,它会返回我想要的总和,但不会返回所有其他数据。
我有没有办法像在我的@history 查询中那样对这些记录进行分组,并获得每个组的信用字段的总和?
* 加法 * 我真正想要的是下面的 SQL 查询会给我什么。
SELECT transaction_type_id, reference_id, sum(credit)
WHERE customer_id in (21,22,23,24) AND no_download <> 1
GROUP BY reference_id, transaction_type_id ORDER BY created_at
【问题讨论】:
-
我相信你可以使用 AREL,就像这篇文章中描述的那样:stackoverflow.com/questions/5972336/…
-
这看起来可能有效。我以前没有使用过 AREL,所以我必须深入研究一下。我尝试了海报在您链接到的帖子中的建议,但是当我在控制台中对其进行测试时,它不会为变量分配任何内容。我一定是错过了什么。
标签: ruby-on-rails ruby-on-rails-3