2017-01-17 1 views
0

Ich habe diese Tabelle mit InformationenSQL Server Werte gruppiert in Spalten von Zeilen basierend auf bestimmten Feldwert zeigt

fk_studentID | fk_courseID | fk_educationalSemesterID | value 
-------------+-------------+--------------------------+------  
    1  |  1  |   1    | 18 
    1  |  2  |   1    | 18 
    1  |  3  |   1    | 14 
    1  |  4  |   1    | 17 
    1  |  5  |   1    | 14 
    1  |  6  |   1    | 17 
    1  |  8  |   1    | 18 
    1  |  1  |   2    | 19 
    1  |  2  |   2    | 19 
    1  |  3  |   2    | 18 
    1  |  4  |   2    | 15 
    1  |  4  |   2    | 19 
    1  |  5  |   2    | 20 
    1  |  1  |   3    | 17 
    1  |  8  |   3    | 20 

benötigen Ausgabeergebnis herzustellen, wie:

fk_studentID | fk_courseID | 1st Semester | 2nd Semester | 3rd Semester 
-------------+-------------+--------------+--------------+------------- 
    1  |  1  |  18  |  19  |  17 
    1  |  2  |  18  |  19  | 
    1  |  3  |  14  |  18  | 
    1  |  4  |  17  |  15  | 
    1  |  5  |  14  |  19  | 
    1  |  6  |  17  |    | 
    1  |  8  |  18  |  20  |  20 

Bitte helfen

+1

Welche Datenbank benutzen Sie? –

Antwort

2

Ich denke, dass Sie nur nach einer Standard-Pivot-Abfrage suchen:

SELECT fk_studentID, 
     fk_courseID, 
     MAX(CASE WHEN fk_educationalSemesterID = 1 THEN value END) AS 1st_semester, 
     MAX(CASE WHEN fk_educationalSemesterID = 2 THEN value END) AS 2nd_semester, 
     MAX(CASE WHEN fk_educationalSemesterID = 3 THEN value END) AS 3rd_semester 
FROM yourTable 
GROUP BY fk_studentID, 
     fk_courseID 
+0

Danke, das funktioniert gut nur das Feld kann nicht nach Nummer für 1., 2. und 3. starten mein Fehler tut mir leid, aber wie kann ich den Bericht generieren, wenn die Anzahl der Bildungssemester nicht bekannt ist? –

+0

Wenn die Anzahl der Semester dynamisch ist, benötigen Sie dynamisches SQL. –

Verwandte Themen