我有以下查询,我也想总结NULL值。一些TimeSheet不记录在TimeRecord中,有些tr.TimeIn和tr.TimeOut是NULL。LINQ to SQL sum null值
查询选择具有reords在TimeRecord仅考勤卡]。我怎样才能让它选择一切,并总结NULL值。所以,NULL的SUM将只是零。
表关系:
- 学生1:N的TimeSheet(FK StudentId)
- 的TimeSheet 1:N TimeRecord(FK TimeSheetId)
TimeIn和超时是DateTime类型和可空。
查询1: Monthy报告:
Dim query = From ts In db.TimeSheets _
Join tr In db.TimeRecords On tr.TimeSheetId Equals ts.TimeSheetId _
Where ts.IsArchive = False And ts.IsCompleted = False And tr.TimeOut IsNot Nothing _
Group By key = New With {ts.Student, .MonthYear = (tr.TimeOut.Value.Month & "/" & tr.TimeOut.Value.Year)} Into TotalHour = Sum(DateDiffSecond(tr.TimeIn, tr.TimeOut)) _
Select key.Student.StudentId, key.Student.AssignedId, key.MonthYear, TotalHour
查询2:总TimeRecord与主动的TimeSheet学生:
Dim query = From ts In db.TimeSheets _
Join tr In db.TimeRecords On tr.TimeSheetId Equals ts.TimeSheetId _
Where ts.IsArchive = False And ts.IsCompleted = False _
Group By ts.StudentId, tr.TimeSheetId Into TotalTime = Sum(DateDiffSecond(tr.TimeIn, tr.TimeOut)) _
Select StudentId, TimeSheetId, TotalTime
这里的查询2的结果:
- 734 - 159:9个小时35毫米28秒
- 2655 - 160:93个小时33毫米50秒
- 1566 - 161:37个小时23毫米53秒
- 3114 - 162:25个小时0毫米21秒
查询2的求购结果:
- 733 - 158:0小时0毫米0秒
- 734 - 159:9个小时35毫米28秒
- 736 - 169:0小时0mm时0秒
- 2655 - 160:93个小时33毫米50秒
- 1566 - 161:37个小时23毫米53秒
- 3114 - 162:25个小时0毫米21秒
同样为查询1,但它使每月报告。
只是提示下一次您发布的问题 - 问题是关于总结空记录,所以剥去一切不是**严格**与它有关。解决核心问题最好不要处理你的案件几年,几个月,学生等。简单地说 - 尊重别人的时间。 – greenoldman 2010-08-20 05:33:06