我有两张桌子学生和折纸。折纸有学生外键表。每个学生每个月可以制作一个或多个折纸。
学生样本数据:
StudentId,FirstName,LastName
折纸样本数据:
OrigamiId,StudentId,CreationDate,NumberOfOrigami
以及更多类似该格式的记录。
我想每月给每个学生的折纸总数。看起来如下的东西:
感谢。
更新一个
Dim query = From st In db.Students _
Join or In db.Origami On or.StudentId Equals st.StudentId _
Group By or.StudentId Into TotalOrigami = Sum(or.NumberOfOrigami) _
Select StudentId, TotalOrigami
此查询仅提供每个学生的总折纸。但我希望每个学生每月计算折纸。任何建议都是欢迎的。
答案 0 :(得分:0)
可以创建一个仅在origami对象上保存Month / Year的额外属性。然后使用下面的查询
var q = from st in db.Students
join or in db.Origami on or.StudentId equals st.StudentID
group st by new { st.StudentId, or.MonthYear } into g
select new { g.Key.StudentId, g.Key.MontYear, Total = g.Count() };
我刚看到这个例子是在C#中,但我希望你能通过。
答案 1 :(得分:0)
这是有效的查询:
Dim query = From st In db.Students _
Join ori In db.Origami On ori.StudentId Equals st.StudentId _
Group By key = New With {ori.Student, .MonthYear = (ori.CreationDate.Value.Month & "/" & tr.CreationDate.Value.Year)} Into TotalOrigami = Sum(ori.NumberOfOrigami) _
Select key.Student.FirstName,key.Student.LastName,key.MonthYear,TotalOrigami