2014-05-23 3 views
1

내가 SQL 쿼리 다음 썼다있는 동안
최대 값은 행이 다른 분야

SELECT ST.Roll, CR.Code, CR.Title, CR.Credits, SCH.ObtainedGPA, SCH.Grade 
FROM [MIU_UCAM.1.0.1].[dbo].[StudentCourseHistory] AS SCH 
JOIN [MIU_UCAM.1.0.1].[dbo].[Student] AS ST ON SCH.StudentID = ST.StudentID 
JOIN [MIU_UCAM.1.0.1].[dbo].[Course] AS CR ON SCH.CourseID = CR.CourseID AND SCH.VersionID = CR.VersionID 

WHERE ST.Roll ='0914BPM00387' 

그것은 여기

Roll   Code Title       Credits ObtainedGPA Grade 

0914BPM00387 BPM216 Physiology Lab -     1 4.00   A+ 
0914BPM00387 BPM217 Pharmaceutical Microbiology  3 2.25   C 
0914BPM00387 BPM217 Pharmaceutical Microbiology  3 2.00   D 
0914BPM00387 BPM218 Pharmaceutical Microbiology Lab 1 3.50   A- 

BPM217 및 BPM217은 동일하지만 ObtainedGrade이 다른의를 다음과 같이 결과를 반환, 2.25와 2.00 그리고 Grade도 C와 D가 다릅니다. 이제 어떻게 칼럼 모자에만 최대 값 2.25를 얻을 수 있습니까?

+0

sql? MySQL이나 MSSQL 또는 PLSQL? – AK47

+0

간단한 것은 어떨까요? 'WHERE SCH.ObtainedGPA <= 2.25' 이것은 ObtainedGPA가 최대 인 모든 열을 가져옵니다. 2.25 – Matthijs

+0

MSSQL 쿼리가 필요합니다. – Khaza

답변

0

하면이 같은 것을보십시오.

SELECT ST.Roll, 
    CR.Code, 
    CR.Title, 
    CR.Credits, 
    (select MAX(SCH.ObtainedGPA) 
      from StudenCourseHistory s 
      where s.StudentID = ST.Student_ID 
      and s.CourseID = CR.CourseID), 
    SCH.Grade 
FROM [MIU_UCAM.1.0.1].[dbo].[StudentCourseHistory] AS SCH 
JOIN [MIU_UCAM.1.0.1].[dbo].[Student] AS ST ON SCH.StudentID = ST.StudentID 
JOIN [MIU_UCAM.1.0.1].[dbo].[Course] AS CR ON SCH.CourseID = CR.CourseID AND SCH.VersionID = CR.VersionID 

WHERE ST.Roll ='0914BPM00387' 
2

어떻게 GRADEObtainedGPAMINMAX를 사용하는 방법에 대한 :

SELECT ST.Roll, CR.Code, CR.Title, CR.Credits, MAX(SCH.ObtainedGPA), MIN(SCH.GRADE) 
FROM [MIU_UCAM.1.0.1].[dbo].[StudentCourseHistory] AS SCH 
JOIN [MIU_UCAM.1.0.1].[dbo].[Student] AS ST ON SCH.StudentID = ST.StudentID 
JOIN [MIU_UCAM.1.0.1].[dbo].[Course] AS CR ON SCH.CourseID = CR.CourseID AND SCH.VersionID = CR.VersionID 
WHERE ST.Roll ='0914BPM00387' 
GROUP BY ST.Roll, CR.Code, CR.Title, CR.Credits 
+0

고맙습니다. 코드가 작동됩니다. – Khaza