2012-02-12 55 views
1

我在SQL Server 2008中三个表相关:问题在SQL Server中查询

学生

StudentId   Name 
     1     Ghanshyam 
     2     John 
     3     Pravin 

考试

ExamId    ExamName 
    1     English 
    2     Math 
    3     SS 
    4     Mechanical 

商标

MarksId  StudentId  ExamId  Marks 
     1    1   1   90 
     2    1   2   45 
     3    1   3   89 
     4    1   4   56 
     5    1   5   93 

我想要得到的结果显示在下面的格式:

Name   English Math SS Mechnical 
    Ghanshyam  90  45 89  56 
    John   89  38 78  87 
    Pravin   98  40 48  38 

我怎样才能获得上述三个表

回答

0

为什么不尝试这样的事情,如果你不想要一个数据透视表?

SELECT s.Name, 
     SUM(CASE WHEN e.ExamName = 'English' THEN m.Marks ELSE 0 END) 
     /NULLIF(COUNT(CASE WHEN e.ExamName = 'English' THEN 1 ELSE 0 END), 0) as English, 
     SUM(CASE WHEN e.ExamName = 'Math' THEN m.Marks ELSE 0 END) 
     /NULLIF(COUNT(CASE WHEN e.ExamName = 'Math' THEN 1 ELSE 0 END), 0) as Math, 
     SUM(CASE WHEN e.ExamName = 'SS' THEN m.Marks ELSE 0 END) 
     /NULLIF(COUNT(CASE WHEN e.ExamName = 'SS' THEN 1 ELSE 0 END), 0) as SS, 
     SUM(CASE WHEN e.ExamName = 'Mechanical' THEN m.Marks ELSE 0 END) 
     /NULLIF(COUNT(CASE WHEN e.ExamName = 'Mechanical' THEN 1 ELSE 0 END), 0) as Mechanical 
FROM students s, marks m, exams e 
WHERE m.StudentID = s.StudentID 
AND m.ExamID = e.ExamID