この単純な 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
次のように、Month と Summed 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 句にも含まれていないため無効です。"
次のように 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) };