2011-09-27 126 views
1

在这里简洁地陈述我的问题,所以我只举一个例子。
比方说,我对学生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

什么是数据库系统? SQL Server,MySQL等... –

+0

DB2,经过编辑用于阐述。好问题。 – NWilkie

+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来完成此操作。

被包括在内的学生必须同时拥有数学和经济学分数。

+0

完美!干杯!解决了我眼前的问题,并且我在写查询方面做得更好。 – NWilkie

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

返回多行,而不是一行,并将包含非数学,非经济类的行。 –

相关问题