Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 学生在课程中的学习成绩_Sql_Pivot_Oracle Sqldeveloper - Fatal编程技术网

Sql 学生在课程中的学习成绩

Sql 学生在课程中的学习成绩,sql,pivot,oracle-sqldeveloper,Sql,Pivot,Oracle Sqldeveloper,我有以下SQL中的结果数据表(我没有共享大约200行): 我想将其旋转,使其看起来类似于以下内容: DEPT COURSE# COURSE NAME A B C D F ---- ------- ------------- --- --- --- --- --- ACCT ACCT2220 ACCOUNTING II 0 50 36 2 9 CHEM CHEM2001 INTRO TO CHEM 17 50 36

我有以下SQL中的结果数据表(我没有共享大约200行):

我想将其旋转,使其看起来类似于以下内容:

DEPT  COURSE#     COURSE NAME   A    B    C   D   F
----  -------   ------------- ---  ---  --- --- ---
ACCT  ACCT2220  ACCOUNTING II   0   50   36  2    9
CHEM  CHEM2001  INTRO TO CHEM   17  50   36  0    0
COSC  COSC1310  INTRO TO COMP   0   50   36  0    0
我当前的查询(混乱):


我似乎不知道从这里该去哪里。每次我使用PIVOT时,都不会运行任何东西,并且我会错误地说出无效标识符。如果您使用的是Sql Server,欢迎您提供任何想法或建议。

这里有一种使用Pivot的方法

SELECT course.offering_dept,
        course.course_number,
        course.course_name,
        [A],[B],[C],[D],[F]
FROM   eb.course,
        eb.grade_report
        JOIN eb.section
            ON grade_report.section_id = section.section_id
PIVOT (Count(grade_report.student_number)
        FOR GRADE IN ([A],[B],[C],[D],[F])) pv 
否则


您使用的是MySQL还是MS SQL Server?@jarlh我删除了SQL Server标记。哎呀!我正在使用oracle sql developer
SELECT
course.offering_dept, course.course_number, course.course_name,
count(grade_report.student_number), grade_report.grade

FROM
eb.course,
eb.grade_report JOIN eb.section ON grade_report.section_id = 
section.section_id

GROUP BY
course.offering_dept, course.course_number, course.course_name, 
grade_report.grade

ORDER BY
course.course_number;
SELECT course.offering_dept,
        course.course_number,
        course.course_name,
        [A],[B],[C],[D],[F]
FROM   eb.course,
        eb.grade_report
        JOIN eb.section
            ON grade_report.section_id = section.section_id
PIVOT (Count(grade_report.student_number)
        FOR GRADE IN ([A],[B],[C],[D],[F])) pv 
SELECT course.offering_dept,
       course.course_number,
       course.course_name,
       sum(CASE WHEN GRADE = 'A' THEN 1 ELSE 0 END) as 'A',
       sum(CASE WHEN GRADE = 'B' THEN 1 ELSE 0 END) as 'B',
       sum(CASE WHEN GRADE = 'C' THEN 1 ELSE 0 END) as 'C',
       sum(CASE WHEN GRADE = 'D' THEN 1 ELSE 0 END) as 'D',
       sum(CASE WHEN GRADE = 'F' THEN 1 ELSE 0 END) as 'F'
FROM   eb.course,
       eb.grade_report
       JOIN eb.section
         ON grade_report.section_id = section.section_id
GROUP  BY course.offering_dept,
          course.course_number,
          course.course_name
ORDER  BY course.course_number;