实体Sql Group By问题,请帮忙
请帮助我完成这个简单的 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) };
help me please with this simple E-sql query:
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)";
Here's what I have.
I have simple Entity called OrdersIncomes
with ID,PaidMoney,DatePaid,Order_ID
properties
I want to select Month and Summed PaidMoney like this:
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)
but E-SQL doesnot work and I dont know what to do. here my E-SQL which needs refactoring:
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)";
there's an exception: ErrorDescription = "The identifier 'o' is not valid because it is not contained either in an aggregate function or in the GROUP BY clause."
if I include o in group by clause, like: FROM XACCModel.OrdersIncomes as o group by o
then I don't get summed and aggregated results.
Is this a bug, or what I'm doing wrong?
Here's a Linq to Entities query and it works too:
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) };
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为 Group By 子句指定一个别名,并在 select 子句中使用该别名。
选择 PaidMonth,SqlServer.Sum(o.PaidMoney) 作为 PaidMoney
FROM XACCModel.OrdersIncomes 作为 o
按 SqlServer.Month(o.DatePaid) 分组为 PaidMonth
Give an alias name to the Group By clause and use that alias in the select clause.
SELECT PaidMonth, SqlServer.Sum(o.PaidMoney) as PaidMoney
FROM XACCModel.OrdersIncomes as o
group by SqlServer.Month(o.DatePaid) as PaidMonth