2017-10-24 1 views
0

I eine Tabellenausgabe haben, wie folgt:Konvertieren von Zeilen in Spalten und umgekehrt für einen Teil der Tabelle in Oracle 10g

class | student | week | eng | maths | science 
    1 | stu1 | 1 | 67 | 78 |  89 
    1 | stu2 | 1 | 78 | 88 |  90 
    1 | stu3 | 1 | 45 | 34 |  45 
    1 | stu1 | 2 | 67 | 45 |  34 

Und ich brauche Endausgabe als:

class | student | sub | week1 | week2 
    1 | stu1 | eng |  67 | 67 
    1 | stu1 | maths |  78 | 45 
    1 | stu1 | science |  89 | 34 
    1 | stu2 | eng |  78 | 89 
    1 | stu2 | maths |  88 | 90 
    1 | stu2 | science |  90 | 89 
    1 | stu3 | eng |  45 |  
    1 | stu3 | maths |  34 |  
    1 | stu3 | science |  45 | 

, die in dem IS Tabelle, für nur ein Teil, Zeilen werden in Spalten umgewandelt und Spalten werden in Zeilen konvertiert.

Ich benutze Orakel 10g.

Hier ist meine Abfrage für die erste Tabelle.

select class, student, 
to_char(dt,'WW') as week, 
sum(case when sm.sub='eng' then 'eng' end) as eng, 
sum(case when sm.sub='maths' then 'maths' end) as maths, 
sum(case when sm.sub='science' then 'science' end) as science 
from studentList sl left join studentMarks sm 
on sl.stId=sm.stId 
group by class, student, to_char(dt,'WW') 
order by class, student; 

Antwort

0

Verwenden Sie hierfür den PIVOT/UNPIVOT-Operator. Einen guten Artikel finden Sie hier: https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

+0

Hallo ich benutze Orakel 10g. PIVOT und UNPIVOT wird in 10g nicht unterstützt. – user3471438

+0

kann Ihnen dabei helfen: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/eac0691a-b562-450a-a522-377bbd79e14d/pivoting?forum=transactsql –

Verwandte Themen