我在SQL Server 2008中有三个表:
学生
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 :(得分:2)
这是数据透视表的示例。看到 http://msdn.microsoft.com/en-us/library/ms177410.aspx 解释如何在MS SQL Server中执行此操作。请注意,也可以使用标准SQL执行此操作,但有点复杂。
答案 1 :(得分:1)
查看pivot操作符/ Complex pivot示例:
http://msdn.microsoft.com/en-us/library/ms177410.aspx
VendorID是您的名字,EmpX是您的主题。
答案 2 :(得分: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