Entity Sql Group По проблеме, пожалуйста, помогите - PullRequest
0 голосов
/ 04 апреля 2010

помогите мне с этим простым E-sql запросом:

var qStr = "SELECT SqlServer.Month(o.DatePaid) as month, SqlServer.Sum(o.PaidMoney) as PaidMoney FROM XACCModel.OrdersIncomes as o group by SqlServer.Month(o.DatePaid)";

Вот что у меня есть.

У меня есть простая сущность с именем OrdersIncomes с ID,PaidMoney,DatePaid,Order_ID свойствами

Я хочу выбрать Месяц и Суммированный PaidMoney следующим образом:

month  Paidmoney

1 500

2 700

3 1200

T-SQL looks like this and works fine:

    select MONTH(o.DatePaid), SUM(o.PaidMoney)
    from OrdersIncomes as o
    group by MONTH(o.DatePaid)

results:
-----------

3           31.0000

4           127.0000

5           20.0000

(3 row(s) affected)

но E-SQL не работает, и я не знаю, что делать. вот мой E-SQL, который нуждается в рефакторинге:

var qStr = "SELECT SqlServer.Month(o.DatePaid) as month, SqlServer.Sum(o.PaidMoney) as PaidMoney FROM XACCModel.OrdersIncomes as o group by SqlServer.Month(o.DatePaid)";

есть исключение: ErrorDescription = "Идентификатор 'o' недопустим, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY."

если я включу o в группу по выражению, например: FROM XACCModel.OrdersIncomes as o group by o тогда я не получаю суммированные и агрегированные результаты. Это ошибка или что я делаю не так?

Вот запрос Linq to Entities, и он тоже работает:

var incomeResult = from ic in _context.OrdersIncomes
     group ic by ic.DatePaid.Month into gr
     select new { Month = gr.Key, PaidMoney = gr.Sum(i => i.PaidMoney) };

1 Ответ

2 голосов
/ 18 августа 2010

Задайте псевдоним для предложения Group By и используйте этот псевдоним в предложении select.

SELECT PaidMonth , SqlServer.Sum (o.PaidMoney) как PaidMoney ОТ XACCModel.OrdersIncomes как o группировать по SqlServer.Month (o.DatePaid) как PaidMonth

...