根据不同的列值从一列中选择值

时间:2011-09-27 18:12:14

标签: sql db2

我在这里简明扼要地陈述我的问题,所以我只想举个例子 假设我有一个关于学生的DB2表:

Name           Class          Grade
Billy J        Econ           A
Sarah S        Maths          B
Greg X         Computes       A-
Billy J        Maths          D
Greg X         Maths          C+

我想找回那些同时拥有经济和数学的学生,并以这种方式展示信息:

Name       Maths Grade       Econ Grade
Billy J    D                 A

我如何在世界上实现这一目标?

2 个答案:

答案 0 :(得分:5)

此解决方案将解决您命名的两个类的问题:

SELECT Name, Math.Grade AS MathsGrade, Econ.Grade AS EconGrade
  FROM Students Math INNER JOIN Students Econ ON Math.Name = Econ.Name
  WHERE Math.Class = 'Maths' AND Econ.Class = 'Econ'

此解决方案唯一不做的是在派生列名称中包含空格。您可以通过在DB2用于标识符引号的任何字符中编写Maths GradeEcon Grade来实现此目的。

要加入学生,必须同时拥有数学和经济学成绩。

答案 1 :(得分:0)

SELECT * from Students
where id in 
(SELECT id from Students where Class = 'Econ')
AND id in
(SELECT id from Students where Class = 'Math');