2010-04-04 2 views
0

помочь мне, пожалуйста, с этой простой E-SQL запроса:Entity Sql Group By проблемы, пожалуйста, помогите

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 = «Идентификатор„о“не является допустимым, поскольку он не содержится ни в статистической функции или в GROUP BY предложения.»

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

Вот Linq к 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) }; 

ответ

2

Дайте имя псевдонима в группе К статье и использовать этот псевдоним в выбранном пункте.

ВЫБРАТЬ PaidMonth, SqlServer.Sum (o.PaidMoney) в PaidMoney ОТ XACCModel.OrdersIncomes как о группы по SqlServer.Month (o.DatePaid) как PaidMonth

+0

спасибо! . . . . . . . . . – Zviadi