SQL Сервер: Сводная таблица Нечетный результат, - PullRequest
0 голосов
/ 16 февраля 2020

Итак, полное раскрытие, я впервые использую сводную таблицу, и результирующий набор имеет несколько столбцов. В этом примере мы будем использовать набор результатов без применения сводной таблицы.

Resultset no Pivot

Этот студент прошел несколько курсов. Каков будет идеальный конечный результат - подсчитать, сколько курсов этот студент прошел. Так что, если я посмотрю, я увижу, что Студент взял алгебру 1 5 раз, Engli sh 1 2 раза и Geometry 2 раза.

Следующее изображение представляет собой запрос с примененной опорой, о, и чтобы сделать вещи сложный, это запрос монстра перед попыткой разворота.

Result With Pivot

Итак, мы видим, что алгебра 1 имеет счет 0, геометрия имеет счет 2 и Engli sh имеет счет 0. Это тот же запрос, что и раньше, но только с использованием этого ученика.

Запрос:

SELECT * 
FROM 
    (SELECT 
         [StudentNumber], psat.MathScaledScore, psat.EBRWScore,
         SCReady.MathScaleScore, SCReady.ReadingScaleScore,
         SpringMap.MathPercentile, SpringMap.ReadingPercentile,
         Coursework.Course_name
     FROM 
         [OnlineApplications].[dbo].[Users] U
     LEFT JOIN 
         [OnlineApplications].[dbo].ContactInfoes C ON C.ContactInfoId = U.UserId
     LEFT JOIN
         (SELECT *
          FROM [DOENRICH-SQL].[enrich_prod].dbo.HCS_view_Most_Recent_PSAT_Scores Scores) AS psat ON U.StudentNumber = psat.number
     LEFT JOIN
         (SELECT 
              stud.Number, sc.DateTaken,
              CASE sc.ELALev
                 WHEN 'E8AE0E4D-AD36-41D8-AC89-627D19661803' THEN 'Exceeds Expectations'
                 WHEN 'C9F2CDA2-D904-438B-9DD3-94EFC9111A0E' THEN 'Approaches Expectations'
                 WHEN '9B39E28F-89C8-44AD-A8F2-1463192F88F1' THEN 'Does Not Meet Expectation'
                 WHEN '87247DB1-4A57-419E-9619-7B43B02B1135' THEN 'Meets Expectations'  
              END ELALev, 
              sc.ELASS AS ELAScaleScore, sc.elavss AS VerticalScaleScore, 
              sc.elassread AS ReadingScaleScore, 
              sc.ELARS10 AS RawScoreStandard10, sc.elASPR AS ELAStatePercentileRank,
              MathLev = CASE MathLev
                           WHEN 'E8AE0E4D-AD36-41D8-AC89-627D19661803' THEN 'Exceeds Expectations'
                           WHEN 'C9F2CDA2-D904-438B-9DD3-94EFC9111A0E' THEN 'Approaches Expectations'
                           WHEN '9B39E28F-89C8-44AD-A8F2-1463192F88F1' THEN 'Does Not Meet Expectation'
                           WHEN '87247DB1-4A57-419E-9619-7B43B02B1135' THEN 'Meets Expectations'  
                        END,
                sc.MATHSS AS MathScaleScore, sc.MathVSS AS MathVerticalScaleScore, 
                sc.mathspr AS MathStatePercentileRank
            FROM
                [DOENRICH-SQL].[enrich_prod].dbo.t_sc_ready sc
            JOIN 
                [DOENRICH-SQL].[enrich_prod].dbo.Student stud ON sc.StudentID = stud.ID
            WHERE
                DateTaken = '2019-05-17') AS SCReady ON SCReady.number = U.studentnumber
        LEFT JOIN 
            (
            select stud.Number,    max(map.readingPercentile) as ReadingPercentile, max(map.mathPercentile) as MathPercentile
            from [DOENRICH-SQL].[ENRICH_PROD].[dbo].t_map map
            join [DOENRICH-SQL].[ENRICH_PROD].[INFORM].[Map_GradeLevelID] mapping on map.GradeLevelID = mapping.DestID
            JOIN [DOENRICH-SQL].[ENRICH_PROD].[dbo].[Student] stud on map.StudentID = stud.ID

            where  DateTaken >= '2018-08-01'
            group by stud.Number

    ) as SpringMap on SpringMap.number = U.Studentnumber

    left  join (

            SELECT * FROM OPENQUERY(PSPROD,'
        Select B.STUDENT_NUMBER , A.COURSE_NAME,  A.GRADE_LEVEL,  A.SCHOOLNAME, A.GRADE
        from PS.STOREDGRADES A 
        join PS.STUDENTS B ON A.STUDENTID = B.ID 



        AND STORECODE in (''Q1'',''Q2'',''Q3'',''Q4'',''F1'')
        AND (COURSE_NAME LIKE ''%Algebra 1%'' OR COURSE_NAME LIKE ''%Geometry Honors%'' OR COURSE_NAME LIKE ''%English 1%'')

        group by B.STUDENT_NUMBER , A.COURSE_NAME,  a.STORECODE, A.GRADE, A.PERCENT, A.GRADE_LEVEL,  A.SCHOOLNAME

        ORDER BY STUDENT_NUMBER, STORECODE DESC
        '
        )
    ) as Coursework on Coursework.STUDENT_NUMBER = U.StudentNumber


    join [OnlineApplications].[dbo].ScholarsApps Sapps on Sapps.ScholarsAppId = u.UserId



   where AppYear = 2019 and StudentNumber <> '' and StudentNumber = '17476'

 ) T
 PIVOT (
 COUNT (COURSE_NAME)
 FOR course_name IN (
 [Algebra 1],
 [Geometry Honors],
 [English 1])
 )
 as Pivot_table

Опять же, очень сложный запрос раньше, и мне не ясно, правильно ли я использую функцию pivot.

Мне бы очень хотелось, чтобы этот круг с количеством курсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...