.group不返回所有列

时间:2011-12-08 16:52:45

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有一个.group查询没有返回select中的所有列,我想知道是否有人可以验证我的语法。 这是一个带有.group的查询和我的控制台的结果;

Expense.select('account_number, SUM(credit_amount)').group(:account_number).first
Expense Load (548.8ms)  EXEC sp_executesql N'SELECT TOP (1) account_number, SUM(credit_amount) FROM [expenses] GROUP BY account_number'
       (36.9ms)  SELECT table_name FROM information_schema.views

即使我选择了两列,我也只是第一个返回。我想知道我是否正在处理数据库适配器问题。

2 个答案:

答案 0 :(得分:0)

尝试给你的总和一个别名:

expense = Expense.select('account_number, SUM(credit_amount) AS credit_amount').group(:account_number).first
puts expense.credit_amount

ActiveRecord不会为聚合操作创建默认别名,例如SUMCOUNT等等......您必须明确地执行此操作才能访问结果,如上所示。 / p>

答案 1 :(得分:0)

SQL中的SUM(credit_amount)列没有别名,默认情况下不会有列名。如果您将其更改为例如别名SUM(credit_amount) As 'A'并选择别名,则应将其取出。