我的表就像这样 表:
id no.of sales datetime
1 14 2013-09-10
2 45 2013-09-09
3 18 2013-09-08
4 14 2013-08-12
5 15 2013-08-14
6 18 2013-07-12
在上面的表中,第9个月有三行。第8个月有2个记录。我需要9个月和8个月的所有销售额的总和等等。 可以请告诉我如何实现这一目标。 我的查询:
DateTime frommonth = DateTime.Now.AddMonths(-3);
DateTime tomonth = DateTime.Now;
var result= from pa in cxt.Products
where (pa.datevalue >= frommonth && pa.datevalue < tomonth)
&& pa.productname == productname
orderby pa.datevalue descending
select new { noofsales=pa.No_of_sales ,datetime=pa.datevalue};
通过使用上述查询,我得到了个人的第9个月记录。我不想要个人销售额,我需要所有9个月销售额,8个月销售额等等。请告诉我......
答案 0 :(得分:3)
你可以使用SqlFunctions.DatePart
静态方法,它将被翻译成DATEPART
sql函数:
var results = from r in ctx.Products
let year = SqlFunctions.DatePart("yy", r.datevalue)
let month = SqlFunctions.DatePart("mm", r.datevalue)
where (r.datevalue >= frommonth && r.datevalue < tomonth)
group r by new { year, month } into g
select new {
Year = g.Key.year,
Month = g.Key.month,
NoSales = g.Sum(x => x.No_of_sales)
};
答案 1 :(得分:1)
var result = from r in cxt.Products
group r by r.datevalue.Month
into g
select new {Month = g.Key, Sum = g.Sum(p=>p.No_of_sales)};