【问题标题】:Entity Sql Group By problem, please helpEntity Sql Group By 问题,请帮忙
【发布时间】:2010-04-04 15:46:24
【问题描述】:

请帮我用这个简单的 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 子句中。"

如果我在 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) };

【问题讨论】:

    标签: c# group-by entity-sql


    【解决方案1】:

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

    选择 PaidMonth,SqlServer.Sum(o.PaidMoney) 作为 PaidMoney FROM XACCModel.OrdersIncomes 为 o 按 SqlServer.Month(o.DatePaid) 分组为 PaidMonth

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 2018-05-13
      • 2011-05-18
      • 1970-01-01
      • 2018-09-07
      相关资源
      最近更新 更多