Advertisement
yuvarajupadhyaya

Student Class By Luffy

Jul 12th, 2022
4,528
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.45 KB | None | 0 0
  1. BEGIN
  2.     --declare @StudentId nvarchar(50) = '20180020'
  3.     --declare @SubjectStartDate datetime = '2018-1-1'
  4.     --declare @SubjectFinishDate datetime = '2018-12-26'
  5.  
  6.     SELECT
  7.         ClassData.ClassID AS ClassId,
  8.         ClassData.SubjectID AS ClassType,
  9.         ClassData.Batch AS ClassName,
  10.         ClassData.RoomName AS ClassRoom,
  11.         ClassData.ClassTeacher AS ClassTeacher,
  12.         --ClassData.StartTime,
  13.         --ClassData.FinishTime,
  14.         CONVERT(VARCHAR(19), ClassData.StartTime,120) + ' - ' + CONVERT(VARCHAR(19), ClassData.FinishTime,120) AS ClassTime,
  15.         ClassData.DAY AS ClassDay,
  16.         ClassData.SubjectStartDate AS ClassFromDate,
  17.         ClassData.SubjectFinishDate AS ClassToDate,
  18.         ClassData.StudentID AS StudentId,
  19.         --ClassData.ClassID,
  20.         (SELECT MAX(v)
  21.         FROM (VALUES (ClassLog.ClassLastUpdated), (ClassLog.ClassModeLastUpdated), (StudentResultLog.LastUpdated))
  22.         AS VALUE(v)) AS ChangedTime
  23.     FROM
  24.         (SELECT  
  25.             cl.ClassID,
  26.             cl.SubjectID,
  27.             sr.Batch,
  28.             r.RoomName,
  29.             st.FirstName + ' ' + st.LastName AS ClassTeacher,
  30.             cm.StartTime,
  31.             cm.FinishTime,
  32.             cm.DAY,
  33.             sr.SubjectStartDate,
  34.             sr.SubjectFinishDate,
  35.             sr.StudentId,
  36.             sr.CourseId,
  37.             sr.CourseAttempt,
  38.             sr.SubAttempt
  39.         FROM studentresults sr
  40.         JOIN course c ON sr.CourseID = c.CourseID
  41.         JOIN class cl ON cl.SubjectID = sr.SubjectID AND cl.Batch = sr.Batch
  42.         JOIN Classmode cm ON cm.ClassID = cl.ClassID
  43.         JOIN Room r ON r.RoomID = cm.RoomID
  44.         LEFT OUTER JOIN Staff st ON st.UserName = cm.TeacherID
  45.         WHERE c.CourseType = 'ELICOS'
  46.         AND sr.Batch <> 'No Batch'
  47.         AND c.FlexiAttd = 0
  48.  
  49.         UNION ALL
  50.    
  51.         SELECT  
  52.             cl.ClassID,
  53.             cl.SubjectID,
  54.             sr.Batch,
  55.             r.RoomName,
  56.             st.FirstName + ' ' + st.LastName AS ClassTeacher,
  57.             cm.StartTime,
  58.             cm.FinishTime,
  59.             cm.DAY,
  60.             sr.SubjectStartDate,
  61.             sr.SubjectFinishDate,
  62.             sr.StudentId,
  63.             sr.CourseId,
  64.             sr.CourseAttempt,
  65.             sr.SubAttempt
  66.         FROM studentresults sr
  67.         JOIN course c ON sr.CourseID = c.CourseID
  68.         JOIN class cl ON cl.SubjectID = sr.SubjectID AND cl.Batch = sr.Batch
  69.         JOIN Classmode cm ON cm.ClassID = cl.ClassID
  70.         JOIN StudentResultsClassMode srcm
  71.             ON sr.StudentID = srcm.StudentId
  72.             AND sr.CourseID = srcm.CourseID
  73.             AND sr.CourseAttempt = srcm.CourseAttempt
  74.             AND sr.SubjectID = srcm.SubjectId
  75.             AND sr.SubAttempt = srcm.SubjectAttempt
  76.             AND srcm.ClassModeId = cm.ClassModeID
  77.         JOIN Room r ON r.RoomID = cm.RoomID
  78.         LEFT OUTER JOIN Staff st ON st.UserName = cm.TeacherID
  79.         WHERE c.CourseType = 'ELICOS'
  80.         AND sr.Batch <> 'No Batch'
  81.         AND c.FlexiAttd = 1 ) AS ClassData
  82.     LEFT OUTER JOIN
  83.         (SELECT
  84.             cl.ClassId,
  85.             MAX(cl.ChangedTime) AS ClassLastUpdated,
  86.             MAX(cml.ChangedTime) AS ClassModeLastUpdated FROM Class_Log cl
  87.         JOIN ClassMode_Log cml ON cl.ClassId = cml.ClassId
  88.         GROUP BY cl.ClassId) AS ClassLog
  89.         ON ClassData.ClassID = ClassLog.ClassId
  90.     LEFT OUTER JOIN
  91.         (SELECT StudentId, CourseId, CourseAttempt, SubjectId, SubAttempt, MAX(ChangedTime) AS LastUpdated
  92.         FROM StudentResults_Log GROUP BY StudentId, CourseId, CourseAttempt, SubjectId, SubAttempt) AS StudentResultLog
  93.         ON
  94.             StudentResultLog.StudentId = ClassData.StudentId
  95.             AND StudentResultLog.CourseId = ClassData.CourseId
  96.             AND StudentResultLog.CourseAttempt = ClassData.CourseAttempt
  97.             AND StudentResultLog.SubjectId = ClassData.SubjectId
  98.             AND StudentResultLog.SubAttempt = ClassData.SubAttempt
  99.     WHERE ClassData.StudentID = @StudentId
  100.     AND @SubjectStartDate <= ClassData.StartTime
  101.     AND ClassData.FinishTime <= @SubjectFinishDate
  102. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement