我正在尝试生成一份报告以显示会计交易历史记录。在大多数情况下,它是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