Advertisement
FoxTuGa

RAA

Nov 18th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.71 KB | None | 0 0
  1. DECLARE @ReportID INT = 3571
  2.  
  3. DECLARE @NUT INT = (SELECT ISNULL(TR2.NUT,0) FROM Training_Report AS TR2 WHERE TR2.ID = @ReportID)
  4.  
  5. DECLARE @NumRegByPOPH INT =
  6. ISNULL((SELECT COUNT(*) FROM Training_Registration AS TRG
  7.     INNER JOIN Training_Report AS TR
  8.         ON TR.ID = @ReportID
  9.     WHERE TRG.Training_Session_ID = TR.SessionID
  10.         AND TRG.Registration_Status = 7
  11.         AND ISNULL(TRG.NUT,0) = ISNULL(TR.NUT,0)),0)
  12.  
  13. DECLARE @NumRegByPOPH2 INT =
  14. ISNULL((SELECT COUNT(*) FROM Training_Registration AS TRG
  15.     INNER JOIN Training_Report AS TR
  16.         ON TR.ID = @ReportID
  17.     WHERE TRG.Training_Session_ID = TR.SessionID
  18.         AND TRG.Registration_Status = 7
  19.         AND ISNULL(TRG.NUT,0) <> ISNULL(TR.NUT,0)),0)
  20.  
  21. DECLARE @NumPresence INT =
  22. CASE @NUT WHEN 0
  23. THEN
  24.     (SELECT COUNT(*) FROM (SELECT TP.Employee_No FROM Training_Presence TP
  25.         INNER JOIN Training_Registration TRGT ON TP.Training_Registration_ID = TRGT.ID
  26.         INNER JOIN Training_Report AS TR ON TR.ID = @ReportID
  27.         INNER JOIN Training_Sessions TS2 ON TS2.ID = TRGT.Training_Session_ID
  28.     WHERE TS2.ID = TR.SessionID
  29.         AND TP.Presence = 1 AND ISNULL(TRGT.POPH,0) = 0
  30.     GROUP BY TP.Employee_No) AS Temp)
  31.  
  32. ELSE
  33.     (SELECT COUNT(*) FROM (SELECT TP.Employee_No FROM Training_Presence TP
  34.         INNER JOIN Training_Registration TRGT ON TP.Training_Registration_ID = TRGT.ID
  35.         INNER JOIN Training_Report AS TR ON TR.ID = @ReportID
  36.         INNER JOIN Training_Sessions TS2 ON TS2.ID = TRGT.Training_Session_ID
  37.     WHERE TS2.ID = TR.SessionID
  38.             AND TP.Presence = 1 AND ISNULL(TRGT.POPH,0) = 1
  39.     GROUP BY TP.Employee_No) AS Temp)
  40. END
  41.  
  42. DECLARE @Num_Entries INT =
  43. CASE @NUT WHEN 0
  44. THEN
  45.     ((SELECT COUNT(TRG.ID)
  46.     FROM Training_Registration TRG
  47.         INNER JOIN Training_Registration_Status TRS ON TRS.ID = TRG.Registration_Status AND TRS.Allow_Registration = 0
  48.         INNER JOIN Training_Report AS TR ON TR.ID = @ReportID
  49.     WHERE TRG.Training_Session_ID = TR.SessionID) -
  50.     @NumRegByPOPH)
  51. ELSE
  52.     @NumRegByPOPH
  53. END
  54.  
  55. DECLARE @Num_Failed INT =
  56. (SELECT COUNT(*) FROM Training_Registration AS TRG
  57.     INNER JOIN Training_Report AS TR
  58.         ON TR.ID = @ReportID
  59. WHERE TRG.Training_Session_ID = TR.SessionID
  60.     AND TRG.AssortmentCode = 2
  61.     AND ISNULL(TRG.NUT,0) = ISNULL(TR.NUT,0))
  62.  
  63. DECLARE @Num_Slot INT =
  64. CASE @NUT
  65. WHEN 0
  66. THEN
  67.     ((SELECT TS.Num_Slot FROM Training_Sessions AS TS
  68.         INNER JOIN Training_Report AS TR
  69.             ON TR.ID = @ReportID
  70.         WHERE TS.ID = TR.SessionID) - @NumRegByPOPH2)
  71. ELSE
  72.     @NumRegByPOPH
  73. END
  74.  
  75. DECLARE @Trainer_Hours INT =
  76. (SELECT ISNULL(SUM(ISNULL(TP.Num_Hours,0)),0) FROM Training_Presence TP
  77.     INNER JOIN Training_Registration TRGT ON TP.Training_Registration_ID = TRGT.ID
  78.     INNER JOIN Training_Report AS TR ON TR.ID = @ReportID
  79.     INNER JOIN Training_Sessions TS2 ON TS2.ID = TRGT.Training_Session_ID
  80. WHERE TS2.ID = TR.SessionID AND ISNULL(TR.NUT,0) = ISNULL(TRGT.NUT,0) AND TP.Presence = 1)
  81.  
  82. DECLARE @ExecutionRate DECIMAL(9,2) =
  83. ((@Trainer_Hours * 100) / ((SELECT ISNULL(SUM(ISNULL(TP.Num_Hours,0)),0) FROM Training_Presence TP
  84.     INNER JOIN Training_Registration TRGT ON TP.Training_Registration_ID = TRGT.ID
  85.     INNER JOIN Training_Sessions TS ON TS.ID = TRGT.Training_Session_ID
  86.     INNER JOIN Training_Report AS TR ON TR.ID = @ReportID
  87. WHERE TS.ID = TR.SessionID AND ISNULL(TRGT.NUT,0) = ISNULL(TR.NUT,0))))
  88.  
  89. DECLARE @Prevision_Hours INT = (SELECT ISNULL(SUM(ISNULL(TP.Num_Hours,0)),0) FROM Training_Presence TP
  90.     INNER JOIN Training_Registration TRGT ON TP.Training_Registration_ID = TRGT.ID
  91.     INNER JOIN Training_Report AS TR ON TR.ID = @ReportID
  92.     INNER JOIN Training_Sessions TS2 ON TS2.ID = TRGT.Training_Session_ID
  93. WHERE TS2.ID = TR.SessionID AND ISNULL(TR.NUT,0) = ISNULL(TRGT.NUT,0))
  94.  
  95. SELECT (SELECT CASE TR.NUT WHEN NULL THEN '' ELSE (' - ' + GC_NUT.[Description]) END) AS PlusNameNut, ISNULL(TS.TrainingReference,'') AS TrainingReference, TR.*, TS.Start_Date, ISNULL('Esta ação de formação foi ainda financiada pelo projecto: ' + TS.FinancingProject + '.', '') AS FinancingProject,TS.End_Date, TC.Course_Description, TS.POPH, TS.Training_Plan,
  96. (ISNULL(TS.Num_Hours,0) + ISNULL(TS.Num_WorkHours,0)) AS NumHours, TS.TrainingYear, TS.LegalTrainingYear, TS.Training_Course_Goals,
  97. (SELECT @Num_Slot) AS 'Num_Slot',
  98. (SELECT @Num_Entries) AS 'Num_Entries',
  99. (SELECT @NumPresence) AS 'NumPresences',
  100. (SELECT @Num_Failed) AS 'NumNonPresences',
  101. (SELECT @Trainer_Hours) AS 'TrainerHours',
  102. (SELECT @ExecutionRate) AS 'ExecutionRate',
  103. (SELECT @Prevision_Hours) AS 'PrevisionHours',
  104. TRE.Conclusion
  105. FROM Training_Report TR
  106. LEFT JOIN General_Codes AS GC_NUT ON GC_NUT.Code = TR.NUT AND GC_NUT.[TYPE] = 'NUT2'
  107. INNER JOIN Training_Sessions TS ON TS.ID = TR.SessionID
  108. INNER JOIN Training_Courses TC ON TC.ID = TS.Course_ID
  109. LEFT JOIN Training_ReportEvaluation TRE ON TRE.ReportID = TR.ID
  110.  
  111. WHERE TR.ID = @ReportID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement