2017-10-28 31 views
0
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 
+1

Google:“oracle pivot” –

+0

同一个学生对于同一个主题可以有两个或三个或更多的标记吗? (如果他们认为他们可以做得更好 - 或者他们第一次失败,他们能够重新参加考试或全班考试吗?)如果是这样,您是否需要最高分,最新分数或平均分,还是还有什么?另外:如果你在这里展示的是你已经完成的预处理的结果(也许是为了处理这些情况!),那么你应该“同时”(或者不是)你已经做了什么;不要做预处理,只做旋转,因为两者都可以一次完成。 – mathguy

回答

0

尝试。

SELECT student_name, 
     "Maths", 
     "Life Science", 
     "Physical Science" 
FROM 
    (SELECT s.* 
    FROM Student s) 
PIVOT (MAX(Marks) 
      FOR subject_name IN 
('Maths' AS "Maths",'Life Science' AS "Life Science",'Physical Science' AS "Physical Science")) 
ORDER BY 3; 
+0

ORA-00933:SQL命令未正确结束 – user8848309

+0

谢谢Kaushik Nayak,但得到了低于erreo – user8848309

相关问题