0

この単純な 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) };
4

1 に答える 1

2

Group By 句にエイリアス名を付け、select 句でそのエイリアスを使用します。

PaidMonthとして SqlServer.Month(o.DatePaid) によって O グループとして XACCModel.OrdersIncomes から PaidMoney として PaidMonth 、 SqlServer.Sum(o.PaidMoney) を選択します。

于 2010-08-17T23:31:50.527 に答える