2012-02-12 56 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