The query returns the data that I need, but it looks rather sloppy. There are only a few hundred rows in the table at the moment, but expect to reach hundreds of thousands. Performance is a concern in the future. Thank you in advance![code="sql"]SELECT CharacterName, RaidMonth = MONTH(RaidDate), RaidYear = YEAR(RaidDate), OnTime = COUNT(CASE WHEN AttendanceReason = 0 THEN 1 END), LatePost = COUNT(CASE WHEN AttendanceReason = 1 THEN 1 END), PostOut = COUNT(CASE WHEN AttendanceReason = 2 THEN 1 END), LateNoPost = COUNT(CASE WHEN AttendanceReason = 3 THEN 1 END), NoShow = COUNT(CASE WHEN AttendanceReason = 4 THEN 1 END), Points = SUM(CASE WHEN AttendanceReason = 0 THEN 1.0 WHEN AttendanceReason = 1 THEN .25 WHEN AttendanceReason = 2 THEN 0.0 WHEN AttendanceReason = 3 THEN -.75 WHEN AttendanceReason = 4 THEN -1.0 END), MaximumPoints = CAST(COUNT(1) AS DECIMAL(18,2)), Grade = CAST((SUM(CASE WHEN AttendanceReason = 0 THEN 1.0 WHEN AttendanceReason = 1 THEN .25 WHEN AttendanceReason = 2 THEN 0.0 WHEN AttendanceReason = 3 THEN -.75 WHEN AttendanceReason = 4 THEN -1.0 END) / CAST(COUNT(1) AS DECIMAL(18,2))) * 100 AS DECIMAL(18, 2))FROM RaidHistory JOIN RaidHistoryAttendees ON RaidHistory.RaidHistoryID = RaidHistoryAttendees.RaidHistoryID JOIN Characters ON RaidHistoryAttendees.CharacterID = Characters.CharacterIDGROUP BY CharacterName, MONTH(RaidDate), YEAR(RaidDate)ORDER BY CharacterName, MONTH(RaidDate), YEAR(RaidDate)[/code]
↧