2014-12-14 2 views
0

에서 그룹화에 의해 변환 및 피벗 :나는 다음과 같이 MS Access에 세 테이블이 SQL

Students(ID, Name, Class) 
Subjects (ID, Name) 
Marks (ID, StudentName[ID of Student], Subject.ID) 

과 다음의 관계 :

--+--------------+---------------+--------------+--------------etc.. 
    Student Name Subject1Name Subject2Name Subject1Name 
--+--------------+---------------+--------------+--------------etc.. 

    jkki LastN  15    50    30 
    XYZ LastN  25    60    70 
    gui LastN  05    30    50 
:

Marks.Subject = Subjects.ID 
Marks.StudentID = Students.ID 

내가 출력 테이블 다음 표시해야

현재 Follwing 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 

:

--+--------------+---------------+--------------+--------------etc.. 
    Student Name Subject1Name Subject2Name Subject1Name 
--+--------------+---------------+--------------+--------------etc.. 

    jkki LastN  15    
    jkki LastN       20  
    jkki LastN           05 

SQL에서 Marks.Obtained에 의해 그룹 제거 오류를 다음 제공합니다 "당신이 지정된 표현을 포함하지 않는 쿼리를 실행하려고 '집계 함수의 일부로 획득'

이 문제를 해결하는 데 도움을주십시오.

+0

질문에 RDBMS 태그 (MsAccess)를 추가하면 더 빠르고 더 높은 품질로 답변하는 데 도움이됩니다. –

답변

1

Transform에는 집계 기능이 있어야합니다. 이것을 시도해보십시오 :

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 
+0

고든 고맙습니다. –

관련 문제