我有一个.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
即使我选择了两列,我也只是第一个返回。我想知道我是否正在处理数据库适配器问题。
答案 0 :(得分:0)
尝试给你的总和一个别名:
expense = Expense.select('account_number, SUM(credit_amount) AS credit_amount').group(:account_number).first
puts expense.credit_amount
ActiveRecord不会为聚合操作创建默认别名,例如SUM
,COUNT
等等......您必须明确地执行此操作才能访问结果,如上所示。 / p>
答案 1 :(得分:0)
SQL中的SUM(credit_amount)
列没有别名,默认情况下不会有列名。如果您将其更改为例如别名SUM(credit_amount) As 'A'
并选择别名,则应将其取出。