2016-05-22 13 views
1

Ich habe eine Tabelle ‚tbl_marks‘ wie diese,SQL-Abfrage schwenken Spalten

st_index Subject  Term  Marks 
---------------------------------------- 
13110  Maths  1  60 
13110  Maths  2  70 
13110  Maths  3  80 
13110  Science  1  70 
13110  Science  2  70 
13110  Science  3  80 
13111  Maths  1  90 
13111  Maths  2  70 
13111  Maths  3  80 
13111  Science  1  80 
13111  Science  2  70 
13111  Science  3  80 

dann muss ich von 1

st_index Maths  Science  
-------------------------------- 
13110  60   70   
13111  90   80 

für die Bewegung der Begriff folgendes Ergebnis nach Filter zeige ich bin mit diesem Code nicht ausgegeben

SELECT st_index, 
    (case when subject='Maths' then marks end)as 'Maths', 
    (case when subject='Science' then marks end)as 'Science' 
FROM tbl_marks 
where term=1 
group by st_index 

Antwort

1

erwartet haben Sie sind ganz in der Nähe, alles, was Sie benötigen, um Ihre CASE EXPRESSION wi wickeln th eine Aggregationsfunktion, wie MAX()/MIN():

SELECT st_index, 
     MAX(case when subject='Maths' then marks end) as Maths, 
     MAX(case when subject='Science' then marks end) as Science 
FROM tbl_marks 
where term=1 
group by st_index 

By the way - diese bedingte Aggregation genannt wird, hat die gleiche Funktionalität wie Pivot, aber sie sind zwei verschiedene Dinge.