[英]Transform and Pivoting by Grouping in SQL
I have three tables in MsAccess as follow: 我在MsAccess中有三个表,如下所示:
Students(ID, Name, Class)
Subjects (ID, Name)
Marks (ID, StudentName[ID of Student], Subject.ID)
and following relation: 和以下关系:
Marks.Subject = Subjects.ID
Marks.StudentID = Students.ID
I need to Display following output table: 我需要显示以下输出表:
--+--------------+---------------+--------------+--------------etc..
Student Name Subject1Name Subject2Name Subject1Name
--+--------------+---------------+--------------+--------------etc..
jkki LastN 15 50 30
XYZ LastN 25 60 70
gui LastN 05 30 50
Currently I have Follwing SQL: 目前我有Folwing SQL:
Transform Marks.Obtained
SELECT Students.Name, Marks.Obtained
FROM (Students INNER JOIN (Marks INNER JOIN Subjects ON Marks.Subject = Subjects.ID)
ON Students.ID = Marks.StudentName)
GROUP BY Students.Name, Marks.Obtained
Pivot Subjects.Name
Which gives repeated output of the same name as follow: 重复输出如下名称:
--+--------------+---------------+--------------+--------------etc..
Student Name Subject1Name Subject2Name Subject1Name
--+--------------+---------------+--------------+--------------etc..
jkki LastN 15
jkki LastN 20
jkki LastN 05
Removing Group by Marks.Obtained from SQL gives following error: "you tried to execute a query that does not include the specified expression 'Obtained' as a part of aggregate function" 从SQL中删除Marks.Obtained的Group会出现以下错误:“您试图执行一个不包含指定表达式'Obtained'作为聚合函数一部分的查询”
Please help me solve this problem. 请帮我解决这个问题。
The Transform
should have an aggregation function. Transform
应具有聚合功能。 Try this: 尝试这个:
Transform MAX(Marks.Obtained)
SELECT Students.Name
FROM (Students INNER JOIN
(Marks INNER JOIN
Subjects
ON Marks.Subject = Subjects.ID)
ON Students.ID = Marks.StudentName)
GROUP BY Students.Name
Pivot Subjects.Name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.