.group не возвращает все столбцы - PullRequest
1 голос
/ 08 декабря 2011

У меня есть запрос .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 голосов
/ 08 декабря 2011

Столбец SUM(credit_amount) из SQL не имеет псевдонима и не будет иметь имя столбца по умолчанию. Если вы измените его, например, на псевдоним SUM(credit_amount) As 'A' и выберете имя псевдонима, он должен его выбрать.

0 голосов
/ 08 декабря 2011

Попробуйте указать сумму псевдонимом:

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

ActiveRecord не создает псевдоним по умолчанию для операций агрегирования, таких как SUM, COUNT и т. Д. ... вы должны сделать это явно, чтобы иметь возможность доступа к результатам, как показано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...