我有以下查詢,我也想總結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