SQL Server:透视表奇数结果,

SQL Server:透视表奇数结果,,sql,sql-server-2008,Sql,Sql Server 2008,这是我第一次使用透视表,结果集有多个列。在本例中,我们将使用未应用透视表的结果集 这个学生修了多项课程。理想的最终结果是,计算这个学生修了多少门课。因此,如果我看一下,我会发现这个学生学了15次代数,12次英语,2次几何 下一张图片是应用了透视图的查询,哦,让事情变得复杂,在尝试透视图之前,它是一个怪物查询 所以我们在这里看到,代数1的计数为0,几何的计数为2,英语的计数为0。这是与之前相同的查询,但仅使用此学生 查询: SELECT * FROM (SELECT

这是我第一次使用透视表,结果集有多个列。在本例中,我们将使用未应用透视表的结果集

这个学生修了多项课程。理想的最终结果是,计算这个学生修了多少门课。因此,如果我看一下,我会发现这个学生学了15次代数,12次英语,2次几何

下一张图片是应用了透视图的查询,哦,让事情变得复杂,在尝试透视图之前,它是一个怪物查询

所以我们在这里看到,代数1的计数为0,几何的计数为2,英语的计数为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
选择*
从…起
(选择
[学生编号],psat.MathScaledScore,psat.EBRWScore,
SCReady.MathScaleScore,SCReady.ReadingScaleScore,
SpringMap.MathPercentile,SpringMap.ReadingPercentile,
课程作业。课程名称
从…起
[OnlineApplications].[dbo].[Users]U
左连接
[OnlineApplications].[dbo].ContactInfoes C上的C.ContactInfoId=U.UserId
左连接
(选择*
来自[DOENRICH-SQL]。[enrich_prod].dbo.HCS_查看_最新_PSAT_分数)作为U.StudentNumber=PSAT.number上的PSAT
左连接
(选择
螺栓编号,sc.日期,
案例sc.ELALev
当“E8AE0E4D-AD36-41D8-AC89-627D19661803”时,则“超出预期”
当“C9F2CDA2-D904-438B-9DD3-94EFC9111A0E”时,则“接近预期”
当“9B39E28F-89C8-44AD-A8F2-1463192F88F1”时,则“不符合预期”
当“87247DB1-4A57-419E-9619-7B43B02B1135”时,则“符合预期”
结束埃拉列夫,
sc.ELASS作为ELAScaleScore,sc.ELASVS作为VerticalScaleScore,
sc.elassread作为读数刻度分数,
sc.ELARS10为RawScoreStandard10,sc.elASPR为ELAStatePercentileRank,
MathLev=案例MathLev
当“E8AE0E4D-AD36-41D8-AC89-627D19661803”时,则“超出预期”
当“C9F2CDA2-D904-438B-9DD3-94EFC9111A0E”时,则“接近预期”
当“9B39E28F-89C8-44AD-A8F2-1463192F88F1”时,则“不符合预期”
当“87247DB1-4A57-419E-9619-7B43B02B1135”时,则“符合预期”
完,,
sc.MATHSS作为MathScaleScore,sc.MathVSS作为MathVerticalScaleScore,
sc.mathspr作为MathStatePercentileRank
从…起
[DOENRICH-SQL].[enrich_prod].dbo.t_sc_ready sc
参加
[DOENRICH-SQL].[enrich_prod].dbo.Student stud ON sc.StudentID=stud.ID
哪里
日期='2019-05-17')为SCReady上的SCReady。编号=U.studentnumber
左连接
(
选择螺柱编号,最大值(map.readingPercentile)作为readingPercentile,最大值(map.mathPercentile)作为mathPercentile
来自[DOENRICH-SQL].[ENRICH_PROD].[dbo].t_map
在Map.GradeLevelID=mapping.Destind上加入[DOENRICH-SQL].[ENRICH\u PROD].[Notify].[Map\u GradeLevelID]映射
在map.StudentID=stud.ID上加入[DOENRICH-SQL].[ENRICH_PROD].[dbo].[Student]stud
其中日期>='2018-08-01'
按螺柱编号分组
)作为SpringMap上的SpringMap.number=U.Studentnumber
左连接(
从OPENQUERY(PSPROD)中选择*
选择B.学生编号、A.课程名称、A.年级、A.学校名称、A.年级
从PS.STOREDGRADES A
在A.STUDENTID=B.ID上加入PS.STUDENTS B
以及存储代码(“Q1”、“Q2”、“Q3”、“Q4”、“F1”)
和(课程名称如“%代数1%”或课程名称如“%几何荣誉%”或课程名称如“%英语1%”)
按B.学生编号、A.课程名称、A.存储代码、A.成绩、A.百分比、A.成绩等级、A.学校名称分组
按学生编号订购,存储代码描述
'
)
)作为课程作业上的课程作业。学生号=学生号
加入[OnlineApplications].[dbo].ScholarApps SAPS on SAPS.ScholarAppId=u.UserId
其中AppYear=2019,StudentNumber''和StudentNumber='17476'
)T
支点(
计数(课程名称)
关于课程名称(
[代数1],
[几何荣誉],
[英文1])
)
作为数据透视表
同样,以前的查询非常复杂,我不清楚是否正确使用了pivot函数


我希望有一个课程计数的轴心。

这个查询很复杂,没有能力实际运行它来查看查询返回的不同部分,我们很难/不可能发现问题。我建议你运用“分而治之”的方法,使用临时表格、CTE或任何其他多种方法将你的怪物分割成多个较小的块。顺便说一句,你的课程名称中的最后一个词是“荣誉”,那么为什么你希望“[代数1]”有一个非零计数?Derp。我责怪一整天都在看这个,而没有看到那些小东西。就是这样,至少我得到了我期望的结果。谢谢你的提示