实体Sql Group按问题,请帮忙

时间:2010-04-04 15:46:25

标签: c# group-by entity-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)";

这就是我所拥有的。

我有一个名为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) };

1 个答案:

答案 0 :(得分:2)

为Group By子句指定别名,并在select子句中使用该别名。

选择 PaidMonth ,SqlServer.Sum(o.PaidMoney)作为PaidMoney 从XACCModel.OrdersIncomes as o 由SqlServer.Month(o.DatePaid)分组为 PaidMonth