Sql 学生在课程中的学习成绩
我有以下SQL中的结果数据表(我没有共享大约200行): 我想将其旋转,使其看起来类似于以下内容: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
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;