2016-07-05 71 views
0

在我們的源表假設我們有數據下面給出:如何在oracle sql中將多行變爲單行數據?

Student Name Subject Name  Marks 
Sam    Maths    100 
Tom    Maths     80 
Sam    Physical Science  80 
John   Maths     75 
Sam    Life Science   70 
John   Life Science   100 
John   Physical Science  85 
Tom    Life Science   100 
Tom    Physical Science  85 

我們要加載我們的目標表爲:

Student Name Maths Life Science Physical Science 
Sam    100  70    80 
John    75  100    85 
Tom    80  100    85 
+2

它被稱爲Pivot,因爲我知道。 – Jens

回答

0

使用PIVOT操作:

SELECT * 
FROM source 
PIVOT (MAX(marks) FOR subject_name IN (
    'Maths'   AS Maths, 
    'Life Science'  AS Life_Science, 
    'Physical Science' AS Physical_Science 
)); 

輸出

STUDENT_NAME MATHS LIFE_SCIENCE PHYSICAL_SCIENCE 
------------ ----- ------------ ---------------- 
Sam   100   70    80 
John   75   100    85 
Tom    80   100    85