Advertisement
yuvarajupadhyaya

StudentInfo By Luffy

Jul 12th, 2022
4,526
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.40 KB | None | 0 0
  1. BEGIN
  2.     --declare @LastSyncDatetime datetime
  3.  
  4.     CREATE TABLE #Temp(
  5.         [StudentId] [nvarchar](100) NOT NULL,
  6.         [CourseID] [nvarchar](50) NOT NULL,
  7.         [CourseAttempt] [INT] NOT NULL,
  8.         [FirstName] [nvarchar](50) NOT NULL,
  9.         [LastName] [nvarchar](50) NOT NULL,
  10.         [Email] [nvarchar](100) NOT NULL,
  11.         [StartDate] [datetime] NOT NULL,
  12.         [FinishDate] [datetime] NOT NULL,
  13.         [STATUS] [nvarchar](50) NOT NULL,
  14.         [CampusID] [nvarchar](50) NOT NULL,
  15.         [LastUpdated] [nvarchar](50) NOT NULL
  16.     )
  17.  
  18.     INSERT INTO #Temp
  19.         SELECT
  20.             sc.StudentID,
  21.             sc.CourseID,
  22.             sc.CourseAttempt,
  23.             s.FirstName,
  24.             s.LastName,
  25.             s.Email,
  26.             sc.StartDate,
  27.             sc.FinishDate,
  28.             sc.STATUS,
  29.             sc.CampusID,
  30.             MAX(CASE WHEN  scl.ChangedTime > sl.ChangedTime THEN scl.ChangedTime ELSE sl.ChangedTime END) AS LastUpdated
  31.         FROM studentcourse sc
  32.         JOIN course c ON c.CourseID = sc.CourseID
  33.         JOIN StudentCourse_Log scl ON scl.StudentID = sc.StudentID AND scl.CourseId = sc.CourseID AND scl.CourseAttempt = sc.CourseAttempt
  34.         JOIN Student s ON s.StudentId = sc.StudentID
  35.         JOIN Student_Log sl ON sl.StudentId = s.StudentId
  36.         WHERE c.CourseType = 'ELICOS'
  37.         AND s.StudentId = '20180020'
  38.         GROUP BY  sc.StudentID, sc.CourseID, sc.CourseAttempt, s.FirstName, s.LastName, s.Email, sc.StartDate, sc.FinishDate, sc.STATUS, sc.CampusID
  39.  
  40.     UPDATE #Temp
  41.     SET StartDate = (SELECT MIN(StartDate) FROM #Temp t1
  42.                     WHERE t1.StudentId = #Temp.StudentId
  43.                     GROUP BY t1.StudentId),
  44.         FinishDate = isnull((SELECT MAX(FinishDate) FROM #Temp t1
  45.                             WHERE t1.StudentId = #Temp.StudentId
  46.                             AND #Temp.STATUS IN ('Current Student',
  47.                                                 'Completed',
  48.                                                 'Deferred',
  49.                                                 'Finished',
  50.                                                 'Returning from Deferral',
  51.                                                 'Converted',
  52.                                                 'Enrolled')
  53.                                                 GROUP BY t1.StudentId )
  54.                             ,(SELECT MAX(FinishDate) FROM #Temp t1
  55.                             WHERE t1.StudentId = #Temp.StudentId
  56.                             GROUP BY t1.StudentId )),
  57.         [STATUS] = (SELECT top 1 LAST_VALUE(STATUS) OVER (ORDER BY StartDate DESC)
  58.                     FROM #Temp t1
  59.                     WHERE t1.StudentId = #Temp.StudentId
  60.                     GROUP BY StudentId,StartDate, STATUS)
  61.  
  62.  
  63.     SELECT
  64.         DISTINCT StudentId,
  65.             FirstName,
  66.             LastName,
  67.             Email,
  68.             StartDate,
  69.             FinishDate,
  70.             STATUS,
  71.             c.CampusName AS SchoolName   
  72.     FROM #Temp
  73.     JOIN Campus c ON #Temp.CampusID = c.CampusID
  74.     WHERE LastUpdated > isnull(@LastSyncDatetime,0)
  75.  
  76.     DROP TABLE #Temp
  77.  
  78. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement