Guest User

Untitled

a guest
Mar 27th, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 21.48 KB | None | 0 0
  1. USE [SDS_DevSchoolDistrict]
  2. GO
  3. SELECT dbo.AssessmentTestScoresByStudentAsXml(2678, DEFAULT, 0, 357, 1)
  4. GO
  5. -- =============================================
  6. -- Author:      School Data Solutions
  7. -- Create date: <Create Date, ,>
  8. -- Description: <Description, ,>
  9. -- Copyright 2011-2012 School Data Solutions, All Rights Reserved
  10. -- =============================================
  11. ALTER FUNCTION [dbo].[AssessmentTestScoresByStudentAsXml]
  12. (   ---------------------------------------------
  13.     @StudentId      int,
  14.     ---------------------------------------------
  15.     @DataViewMode       varchar(200) = 'Standard',
  16.     @EncryptIds         bit = 0,
  17.     @ApplicationUserId  int = NULL,
  18.     @ApplicationUserPersonRoleId int = 1
  19. )   ---------------------------------------------
  20. RETURNS Xml
  21. AS
  22. BEGIN   /*---------------------------------------------
  23.         --SELECT StudentId, COUNT(AssessmentTestId) FROM StudentAssessmentTestScores GROUP BY StudentId
  24.         DECLARE @StudentId                  int = 2678
  25.         DECLARE @DataViewMode       varchar(200)= 'Standard'
  26.         DECLARE @EncryptIds                 bit = 0
  27.         DECLARE @ApplicationUserId          int = 357
  28.         DECLARE @ApplicationUserPersonRoleId int = 1
  29.         ---------------------------------------------*/
  30.        
  31.        
  32.        
  33.         ---------------------------------------------
  34.         -- Declare the return variable here
  35.         -- Prepare for performance metrics
  36.         ---------------------------------------------
  37.         DECLARE @Xml XML = '<Xml xmlAssemblyTimeInMilliseconds=""></Xml>'
  38.         DECLARE @StartTime time = CAST(GETDATE() as time)
  39.         ---------------------------------------------
  40.        
  41.        
  42.        
  43.         ---------------------------------------------
  44.         -- Ensure access is valid
  45.         ---------------------------------------------
  46.         IF NOT EXISTS(
  47.             SELECT  *
  48.             FROM    ApplicationUserPermissions AUP
  49.             JOIN    SecurableItems SI
  50.               ON    SI.SecurableItem = 'Student Assessments'
  51.              AND    AUP.ApplicationSecurityPermissionId >=
  52.                         SI.MinimumApplicationSecurityPermissionId
  53.             WHERE   AUP.EntityId = @StudentId
  54.              AND    AUP.PersonRoleId = 8 --student
  55.              AND    AUP.ApplicationUserId = @ApplicationUserId
  56.              AND    AUP.ApplicationUserPersonRoleId = @ApplicationUserPersonRoleId
  57.             )
  58.             GOTO ALLDONE
  59.  
  60.            
  61.            
  62.            
  63.         ---------------------------------------------
  64.         -- Student-Assessment-Test-Scores
  65.         ---------------------------------------------
  66.         DECLARE @StudentAssessmentTestScores TABLE (
  67.                 AssessmentTestId                int,
  68.                 StudentAssessmentTestScore      float, --decimal(18, 2),
  69.                 StudentAssessmentTestScoreText  varchar(20),
  70.                 AssessmentTestAdministrationId  int,
  71.                 SchoolYearId                    int,
  72.                 AssessmentTestPerformanceLevelId int,
  73.                 AssessmentTestPerformanceLevel  varchar(100),
  74.                 AssessmentTestPerformanceLevelColor varchar(20)
  75.         )
  76.         ---------------------------------------------
  77.         INSERT  @StudentAssessmentTestScores
  78.         SELECT  SATS.AssessmentTestId,
  79.                 SATS.StudentAssessmentTestScore,
  80.                 dbo.TrimZeros(SATS.StudentAssessmentTestScore),
  81.                 SATS.AssessmentTestAdministrationId,
  82.                 SATS.SchoolYearId,
  83.                 PL.AssessmentTestPerformanceLevelId,
  84.                 PL.AssessmentTestPerformanceLevel,
  85.                 PL.AssessmentTestPerformanceLevelColor
  86.         FROM    StudentMaximumAssessmentTestScores(NULL, @StudentId, NULL) SATS
  87.         LEFT
  88.         JOIN    AssessmentTestPerformanceLevels PL
  89.           ON    SATS.AssessmentTestPerformanceLevelId = PL.AssessmentTestPerformanceLevelId
  90.         WHERE   SATS.StudentId = @StudentId
  91.         ---------------------------------------------
  92.         --SELECT * FROM @StudentAssessmentTestScores
  93.         ---------------------------------------------
  94.  
  95.  
  96.  
  97.  
  98.         ---------------------------------------------
  99.         -- Assessment-Tests
  100.         ---------------------------------------------
  101.         DECLARE @AssessmentTests TABLE (
  102.                 AssessmentTestId [ElementId]  NOT NULL,
  103.                 AssessmentTestName [ElementName] NOT NULL,
  104.                 AssessmentTestLabel [ElementName] NOT NULL,
  105.                 AssessmentTestIsPassFail [bit] NOT NULL,
  106.                 LowestPossibleScore [Number] NOT NULL,
  107.                 HighestPossibleScore [Number] NOT NULL,
  108.                 MinimumPassingScore [Number] NULL,
  109.                 PassingScoreColor [HexColor] NOT NULL,
  110.                 FailingScoreColor [HexColor] NOT NULL,
  111.         --      GradeLevelId [ElementReference] NULL,
  112.                 AssessmentTestSubjectAreaId [ElementReference] NULL,
  113.                 ParentAssessmentTestId [SelfReference] NULL,
  114.                 CorrespondingAssessmentTestGroupId [ElementReference] NULL
  115.         )
  116.         ---------------------------------------------
  117.         INSERT  @AssessmentTests
  118.         SELECT  T.AssessmentTestId,
  119.                 T.AssessmentTestName,
  120.                 T.AssessmentTestLabel,
  121.                 T.AssessmentTestIsPassFail,
  122.                 T.LowestPossibleScore,
  123.                 T.HighestPossibleScore,
  124.                 T.MinimumPassingScore,
  125.                 T.PassingScoreColor,
  126.                 T.FailingScoreColor,
  127.         --      T.GradeLevelId,
  128.                 T.AssessmentTestSubjectAreaId,
  129.                 T.ParentAssessmentTestId,
  130.                 T.CorrespondingAssessmentTestGroupId
  131.         FROM    AssessmentTests T
  132.         WHERE   EXISTS (
  133.                         SELECT  1
  134.                         FROM    @StudentAssessmentTestScores SATS
  135.                         WHERE   SATS.AssessmentTestId = T.AssessmentTestId
  136.                 )  
  137.         ---------------------------------------------
  138.         --SELECT * FROM @AssessmentTests
  139.         ---------------------------------------------
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.         ---------------------------------------------
  147.         -- @SchoolYears
  148.         ---------------------------------------------
  149.         DECLARE @SchoolYears TABLE (
  150.                 SchoolYearId [ElementId]  NOT NULL,
  151.                 SchoolYear [ElementName] NOT NULL,
  152.                 Ordinal int NULL
  153.         )
  154.         ---------------------------------------------
  155.         INSERT  @SchoolYears
  156.         SELECT  SY.SchoolYearId,
  157.                 SY.SchoolYear,
  158.                 20 - SY.SchoolYearOrdinal AS Ordinal
  159.         FROM    SchoolYears SY
  160.         WHERE   EXISTS (
  161.                         SELECT 1
  162.                         FROM    @StudentAssessmentTestScores SATS
  163.                         WHERE   SATS.SchoolYearId = SY.SchoolYearId
  164.                 )
  165.         ---------------------------------------------
  166.         --SELECT * FROM @SchoolYears
  167.         ---------------------------------------------
  168.  
  169.  
  170.  
  171.  
  172.  
  173.         ---------------------------------------------
  174.         -- @SubjectAreas
  175.         ---------------------------------------------
  176.         DECLARE @SubjectAreas TABLE (
  177.                 AssessmentTestSubjectAreaId [ElementId]  NOT NULL,
  178.                 AssessmentTestSubjectArea [ElementName] NOT NULL,
  179.                 Ordinal int NULL,
  180.                 SchoolYearId int
  181.         )
  182.         ---------------------------------------------
  183.         INSERT  @SubjectAreas
  184.         SELECT  DISTINCT
  185.                 ATSA.AssessmentTestSubjectAreaId,
  186.                 ATSA.AssessmentTestSubjectArea,
  187.                 ATSA.AssessmentTestSubjectAreaOrdinal,
  188.                 SATS.SchoolYearId
  189.         FROM    @StudentAssessmentTestScores SATS
  190.         JOIN    AssessmentTests AT
  191.           ON    SATS.AssessmentTestId = AT.AssessmentTestId
  192.         JOIN    AssessmentTestSubjectAreas ATSA  
  193.           ON    AT.AssessmentTestSubjectAreaId = ATSA.AssessmentTestSubjectAreaId
  194.         ---------------------------------------------
  195.         --SELECT * FROM @SubjectAreas
  196.         ---------------------------------------------
  197.  
  198.  
  199.  
  200.  
  201.  
  202.         ---------------------------------------------
  203.         -- @AssessmentTestScores
  204.         ---------------------------------------------
  205.         DECLARE @AssessmentTestScores TABLE (
  206.                 AssessmentTestId [ElementId]  NOT NULL,
  207.                 AssessmentTestLabel [ElementName] NOT NULL,
  208.                 OrdinalText varchar(50) NULL,
  209.                 AssessmentTestIsPassFail bit,
  210.                 CorrespondingAssessmentTestGroupId int,
  211.                 HighestPossibleScore int,
  212.                 LowestPossibleScore int,
  213.                 MinimumPassingScore int,
  214.                 PassingScoreColor varchar(6),
  215.                 FailingScoreColor varchar(6),
  216.                 AssessmentTestSubjectAreaId int,
  217.                 ParentAssessmentTestId int,
  218.                 --------------------------------------
  219.                 StudentAssessmentTestScore decimal(18, 2),
  220.                 StudentAssessmentTestScoreText varchar(20),
  221.                 SchoolYearId int,
  222.                 AssessmentTestPerformanceLevelId int,
  223.                 AssessmentTestPerformanceLevel varchar(50),
  224.                 AssessmentTestPerformanceLevelColor varchar(6),
  225.                 Passed bit
  226.                
  227.         )
  228.         ---------------------------------------------
  229.         INSERT  @AssessmentTestScores
  230.         SELECT  DISTINCT
  231.                 AT.AssessmentTestId,
  232.                 AT.AssessmentTestLabel,
  233.                 AT.AssessmentTestLabel,
  234.                 AT.AssessmentTestIsPassFail,
  235.                 AT.CorrespondingAssessmentTestGroupId,
  236.                 AT.HighestPossibleScore,
  237.                 AT.LowestPossibleScore,
  238.                 AT.MinimumPassingScore,
  239.                 AT.PassingScoreColor,
  240.                 AT.FailingScoreColor,
  241.                 AT.AssessmentTestSubjectAreaId,
  242.                 AT.ParentAssessmentTestId,
  243.                 --------------------------------------
  244.                 SATS.StudentAssessmentTestScore,
  245.                 SATS.StudentAssessmentTestScoreText,
  246.                 SATS.SchoolYearId,
  247.                 SATS.AssessmentTestPerformanceLevelId,
  248.                 SATS.AssessmentTestPerformanceLevel,
  249.                 SATS.AssessmentTestPerformanceLevelColor,
  250.                 CASE
  251.                     WHEN(SATS.StudentAssessmentTestScore >= AT.MinimumPassingScore) THEN CAST(1 as bit)
  252.                     ELSE CAST(0 as bit)
  253.                 END AS Passed  
  254.         FROM    @AssessmentTests AT
  255.         JOIN    @StudentAssessmentTestScores SATS
  256.           ON    AT.AssessmentTestId = SATS.AssessmentTestId
  257.         ---------------------------------------------
  258.         --SELECT * FROM @AssessmentTestScores                
  259.         ---------------------------------------------
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.         ---------------------------------------------
  276.         -- Assessment-Tests-Performance-Levels
  277.         ---------------------------------------------
  278.         DECLARE @PerformanceLevels XML
  279.         SET @PerformanceLevels = (
  280.                 SELECT  CASE @EncryptIds
  281.                           WHEN 1
  282.                             THEN CAST(PLEncryptedIds.EncryptedId as varchar(200))
  283.                           ELSE   CAST(PL.AssessmentTestPerformanceLevelId as varchar(200))
  284.                         END AS '@Id',
  285.                         PL.AssessmentTestPerformanceLevel AS '@Label',
  286.                         PL.AssessmentTestPerformanceLevelMinimumScore AS '@MinimumScore',
  287.                         PL.AssessmentTestPerformanceLevelMaximumScore AS '@MaximumScore',
  288.                         PL.AssessmentTestPerformanceLevelColor AS '@Color',
  289.                         CASE @EncryptIds
  290.                           WHEN 1
  291.                             THEN CAST(AssessmentTestEncryptedIds.EncryptedId as varchar(200))
  292.                           ELSE   CAST(PL.AssessmentTestId as varchar(200))
  293.                         END AS '@AssessmentTestId',
  294.                         ROW_NUMBER() OVER (PARTITION BY PL.AssessmentTestId ORDER BY PL.AssessmentTestPerformanceLevelOrdinalByTest DESC) AS '@Ordinal'
  295.                 FROM    AssessmentTestPerformanceLevels PL
  296.                 LEFT
  297.                 JOIN    EncryptedIds PLEncryptedIds
  298.                   ON    PL.AssessmentTestPerformanceLevelId = PLEncryptedIds.Id
  299.                 JOIN    EncryptedIds AssessmentTestEncryptedIds
  300.                   ON    PL.AssessmentTestId = AssessmentTestEncryptedIds.Id
  301.                 WHERE   EXISTS (
  302.                                 SELECT  1
  303.                                 FROM    @StudentAssessmentTestScores SATS
  304.                                 WHERE   PL.AssessmentTestId = SATS.AssessmentTestId
  305.                         )      
  306.                 FOR XML PATH('PerformanceLevel'), ROOT('PerformanceLevels')  
  307.         )
  308.         ---------------------------------------------
  309.         --SELECT @PerformanceLevels AS '@PerformanceLevels'
  310.         ---------------------------------------------
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.         ---------------------------------------------
  318.         -- AssessmentTestScores
  319.         /*---------------------------------------------
  320.         <?xml version="1.0" encoding="UTF-8"?>
  321.         <Xml for="Assessment-Test-Scores-by-Student">
  322.             <SchoolYear SchoolYear="2011/2012" Ordinal="1">
  323.                 <SubjectArea SubjectArea="">
  324.                     <AssessmentTest Label="MAP" LowestPossibleScore="200" highestPossibleScore="800" StudentAssesmentTestScore="425" AssessmentTestIsPassFail="False" PassingScoreColor="" FailingScoreColor="" AssessmentTestAdministrationId="1" AssessmentTestAdministrationName="End of year" AssessmentTestAdministrationStartDate="10/10/2012" AssessmentTestAdministrationEndDate="11/11/2012" AssessmentTestAdministrationLocation="Wilson High School">
  325.                         <AssessmentTestPerformanceLevel id="1" name="Level 1" color="#FF0000" minimumScore="" maximumScore="" ordinal=""/>
  326.                         <ChildAssessmentTest  id="1" Label="MAP - Reading" LowestPossibleScore="200" highestPossibleScore="800" StudentAssesmentTestScore="425" AssessmentTestIsPassFail="False" PassingScoreColor="" FailingScoreColor="" AssessmentTestAdministrationId="1" AssessmentTestAdministrationName="End of year" AssessmentTestAdministrationStartDate="10/10/2012" AssessmentTestAdministrationEndDate="11/11/2012" AssessmentTestAdministrationLocation="Wilson High School" SchoolYear="2011/2012">
  327.                             <AssessmentTestPerformanceLevel id="1" name="Level 1" color="#FF0000" minimumScore="" maximumScore="" ordinal=""/>
  328.                         </ChildAssessmentTest>
  329.                     </AssessmentTest>
  330.                 </SubjectArea>
  331.             </SchoolYear>
  332.         </Xml>
  333.         */---------------------------------------------
  334.         DECLARE @SchoolYearsSubjectAreasAssessmentTests Xml
  335.         ---------------------------------------------
  336.         SET @SchoolYearsSubjectAreasAssessmentTests = (
  337.                 SELECT  -------------------------
  338.                         CASE @EncryptIds
  339.                           WHEN 1
  340.                             THEN CAST(SchoolYearEncryptedIds.EncryptedId as varchar(200))
  341.                           ELSE   CAST(SchoolYear.SchoolYearId as varchar(200))
  342.                         END AS 'SchoolYear/@Id',
  343.                         SchoolYear.SchoolYear AS 'SchoolYear/@Text',
  344.                         SchoolYear.Ordinal AS 'SchoolYear/@Ordinal',
  345.                         -------------------------
  346.                         CASE @EncryptIds
  347.                           WHEN 1
  348.                             THEN CAST(SubjectAreaEncryptedIds.EncryptedId as varchar(200))
  349.                           ELSE   CAST(SubjectArea.AssessmentTestSubjectAreaId as varchar(200))
  350.                         END AS 'SchoolYear/SubjectArea/@Id',
  351.                         SubjectArea.AssessmentTestSubjectArea AS 'SchoolYear/SubjectArea/@Text',
  352.                         SubjectArea.Ordinal AS 'SchoolYear/SubjectArea/@Ordinal',
  353.                         -------------------------
  354.                         CASE @EncryptIds
  355.                           WHEN 1
  356.                             THEN CAST(AssessmentTestEncryptedIds.EncryptedId as varchar(200))
  357.                           ELSE   CAST(AssessmentTest.AssessmentTestId as varchar(200))
  358.                         END AS 'SchoolYear/SubjectArea/AssessmentTest/@Id',
  359.                         AssessmentTest.AssessmentTestLabel AS 'SchoolYear/SubjectArea/AssessmentTest/@Label',
  360.                         AssessmentTest.AssessmentTestLabel AS 'SchoolYear/SubjectArea/AssessmentTest/@Ordinal',
  361.                         AssessmentTest.AssessmentTestIsPassFail AS 'SchoolYear/SubjectArea/AssessmentTest/@IsPassFail',
  362.                         CASE @EncryptIds
  363.                           WHEN 1
  364.                             THEN CAST(AssessmentTestGroupEncryptedIds.EncryptedId as varchar(200))
  365.                           ELSE   CAST(AssessmentTest.CorrespondingAssessmentTestGroupId as varchar(200))
  366.                         END AS 'SchoolYear/SubjectArea/AssessmentTest/@AssessmentTestGroupId',
  367.                         AssessmentTest.HighestPossibleScore AS 'SchoolYear/SubjectArea/AssessmentTest/@MaximumScore',
  368.                         AssessmentTest.LowestPossibleScore AS 'SchoolYear/SubjectArea/AssessmentTest/@MinimumScore',
  369.                         AssessmentTest.MinimumPassingScore AS 'SchoolYear/SubjectArea/AssessmentTest/@MinimumPassingScore',
  370.                         AssessmentTest.PassingScoreColor AS 'SchoolYear/SubjectArea/AssessmentTest/@PassingScoreColor',
  371.                         AssessmentTest.FailingScoreColor AS 'SchoolYear/SubjectArea/AssessmentTest/@FailingScoreColor',
  372.                         --AssessmentTest.StudentAssessmentTestScore AS 'Score',
  373.                         AssessmentTest.StudentAssessmentTestScoreText AS 'SchoolYear/SubjectArea/AssessmentTest/@Score',
  374.                         CASE @EncryptIds
  375.                           WHEN 1
  376.                             THEN CAST(AssessmentTestPLEncryptedIds.EncryptedId as varchar(200))
  377.                           ELSE   CAST(AssessmentTest.AssessmentTestPerformanceLevelId as varchar(200))
  378.                         END AS 'SchoolYear/SubjectArea/AssessmentTest/@PerformanceLevelId',
  379.                         AssessmentTest.AssessmentTestPerformanceLevel AS 'SchoolYear/SubjectArea/AssessmentTest/@PerformanceLevel',
  380.                         AssessmentTest.AssessmentTestPerformanceLevelColor AS 'SchoolYear/SubjectArea/AssessmentTest/@PerformanceLevelColor',
  381.                         AssessmentTest.Passed AS 'SchoolYear/SubjectArea/AssessmentTest/@Passed',
  382.                         -------------------------
  383.                         CASE @EncryptIds
  384.                           WHEN 1
  385.                             THEN CAST(ChildAssessmentTestEncryptedIds.EncryptedId as varchar(200))
  386.                           ELSE   CAST(ChildAssessmentTest.AssessmentTestId as varchar(200))
  387.                         END AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@Id',
  388.                         ChildAssessmentTest.AssessmentTestLabel AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@Label',
  389.                         ChildAssessmentTest.AssessmentTestLabel AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@Ordinal',
  390.                         ChildAssessmentTest.AssessmentTestIsPassFail AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@IsPassFail',
  391.                         CASE @EncryptIds
  392.                           WHEN 1
  393.                             THEN CAST(ChildAssessmentTestGroupEncryptedIds.EncryptedId as varchar(200))
  394.                           ELSE   CAST(ChildAssessmentTest.CorrespondingAssessmentTestGroupId as varchar(200))
  395.                         END AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@AssessmentTestGroupId',
  396.                         ChildAssessmentTest.HighestPossibleScore AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@MaximumScore',
  397.                         ChildAssessmentTest.LowestPossibleScore AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@MinimumScore',
  398.                         ChildAssessmentTest.MinimumPassingScore AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@MinimumPassingScore',
  399.                         ChildAssessmentTest.PassingScoreColor AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@PassingScoreColor',
  400.                         ChildAssessmentTest.FailingScoreColor AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@FailingScoreColor',
  401.                         --ChildAssessmentTest.StudentAssessmentTestScore AS 'Score',
  402.                         ChildAssessmentTest.StudentAssessmentTestScoreText AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@Score',
  403.                         CASE @EncryptIds
  404.                           WHEN 1
  405.                             THEN CAST(ChildAssessmentTestPLEncryptedIds.EncryptedId as varchar(200))
  406.                           ELSE   CAST(ChildAssessmentTest.AssessmentTestPerformanceLevelId as varchar(200))
  407.                         END AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@PerformanceLevelId',
  408.                         ChildAssessmentTest.AssessmentTestPerformanceLevel AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@PerformanceLevel',
  409.                         ChildAssessmentTest.AssessmentTestPerformanceLevelColor AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@PerformanceLevelColor',
  410.                         ChildAssessmentTest.Passed AS 'SchoolYear/SubjectArea/AssessmentTest/ChildAssessmentTest/@Passed'
  411.                         -------------------------
  412.                 FROM    @SchoolYears SchoolYear
  413.                 JOIN    EncryptedIds SchoolYearEncryptedIds
  414.                   ON    SchoolYear.SchoolYearId = SchoolYearEncryptedIds.Id
  415.                 JOIN    @SubjectAreas SubjectArea
  416.                   ON    SchoolYear.SchoolYearId = SubjectArea.SchoolYearId
  417.                 JOIN    EncryptedIds SubjectAreaEncryptedIds
  418.                   ON    SubjectArea.AssessmentTestSubjectAreaId = SubjectAreaEncryptedIds.Id
  419.                  
  420.                 --      Parent test and associated encrypted ids
  421.                 JOIN    @AssessmentTestScores AssessmentTest
  422.                   ON    AssessmentTest.SchoolYearId = SchoolYear.SchoolYearId
  423.                  AND    AssessmentTest.AssessmentTestSubjectAreaId = SubjectArea.AssessmentTestSubjectAreaId
  424.                  AND    AssessmentTest.ParentAssessmentTestId IS NULL
  425.                 JOIN    EncryptedIds AssessmentTestEncryptedIds
  426.                   ON    AssessmentTest.AssessmentTestId = AssessmentTestEncryptedIds.Id
  427.                 JOIN    EncryptedIds AssessmentTestPLEncryptedIds
  428.                   ON    AssessmentTest.AssessmentTestPerformanceLevelId = AssessmentTestPLEncryptedIds.Id
  429.                 LEFT
  430.                 JOIN    EncryptedIds AssessmentTestGroupEncryptedIds
  431.                   ON    AssessmentTest.CorrespondingAssessmentTestGroupId = AssessmentTestGroupEncryptedIds.Id
  432.  
  433.                 --      Child tests and assorted encrypted ids
  434.                 LEFT
  435.                 JOIN    @AssessmentTestScores ChildAssessmentTest
  436.                   ON    AssessmentTest.SchoolYearId = ChildAssessmentTest.SchoolYearId
  437.                  AND    AssessmentTest.AssessmentTestId = ChildAssessmentTest.ParentAssessmentTestId
  438.                 LEFT
  439.                 JOIN    EncryptedIds ChildAssessmentTestEncryptedIds
  440.                   ON    ChildAssessmentTest.AssessmentTestId = ChildAssessmentTestEncryptedIds.Id
  441.                 LEFT
  442.                 JOIN    EncryptedIds ChildAssessmentTestPLEncryptedIds
  443.                   ON    ChildAssessmentTest.AssessmentTestPerformanceLevelId = ChildAssessmentTestPLEncryptedIds.Id
  444.                 LEFT
  445.                 JOIN    EncryptedIds ChildAssessmentTestGroupEncryptedIds
  446.                   ON    ChildAssessmentTest.CorrespondingAssessmentTestGroupId = ChildAssessmentTestGroupEncryptedIds.Id
  447.  
  448.                 ORDER
  449.                    BY   SchoolYear.Ordinal,
  450.                         SubjectArea.Ordinal,
  451.                         AssessmentTest.OrdinalText,
  452.                         ChildAssessmentTest.OrdinalText
  453.                 FOR XML PATH(''), ROOT('AssessmentTestScores')   
  454.         )
  455.         ---------------------------------------------
  456.         SET @SchoolYearsSubjectAreasAssessmentTests = dbo.XmlNormalize(@SchoolYearsSubjectAreasAssessmentTests)
  457.         --SELECT @SchoolYearsSubjectAreasAssessmentTests AS '@SchoolYearsSubjectAreasAssessmentTests'
  458.         ---------------------------------------------
  459.  
  460.  
  461.  
  462.  
  463.  
  464.         ---------------------------------------------
  465.         -- Student
  466.         ---------------------------------------------
  467.         DECLARE @Student XML
  468.         SET @Student = (
  469.                 SELECT  P.FirstName AS '@FirstName',
  470.                         P.LastName AS '@LastName',
  471.                         CASE
  472.                             WHEN(@EncryptIds = 1) THEN P.EncryptedId
  473.                             ELSE P.PersonId
  474.                         END AS '@Id'
  475.                 FROM    DataModePersons(@StudentId, @DataViewMode) P
  476.                 FOR XML PATH('Student'), ROOT('Xml')     
  477.         )
  478.         ---------------------------------------------
  479.         --SELECT @Student AS '@Student'
  480.         ---------------------------------------------
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.         ---------------------------------------------
  488.         -- Assemble output Xml
  489.         ---------------------------------------------
  490.         SET @SchoolYearsSubjectAreasAssessmentTests = dbo.XmlJoin(@SchoolYearsSubjectAreasAssessmentTests, @PerformanceLevels, 'AssessmentTest.Id = PerformanceLevel.AssessmentTestId')
  491.         SET @SchoolYearsSubjectAreasAssessmentTests = dbo.XmlJoin(@SchoolYearsSubjectAreasAssessmentTests, @PerformanceLevels, 'ChildAssessmentTest.Id = PerformanceLevel.AssessmentTestId')
  492.         SET @Student = dbo.XmlAdopt(@Student,@SchoolYearsSubjectAreasAssessmentTests,'Student','SchoolYear')
  493.         SET @Xml = dbo.XmlAdopt(@Xml,@Student,'Xml','Student')
  494.         ---------------------------------------------
  495.        
  496.  
  497. ALLDONE:
  498.  
  499.         ---------------------------------------------
  500.         -- Track Assembly time
  501.         ---------------------------------------------
  502.         DECLARE @XmlAssemblyTimeInMilliseconds int = DATEDIFF(ms, @StartTime,  CAST(GETDATE() as time))
  503.         SET @Xml = dbo.XmlAssignAttributeValues(@Xml, '//Xml', 'xmlAssemblyTimeInMilliseconds', @XmlAssemblyTimeInMilliseconds)
  504.         ---------------------------------------------
  505.  
  506.  
  507.         --SELECT @Xml AS '@Xml'
  508.         --------------------------------------------
  509.         RETURN @Xml
  510. END
Advertisement
Add Comment
Please, Sign In to add comment