2011-09-27 127 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

返回多行,而不是一行,並將包含非數學,非經濟類的行。 –

相關問題