SQL server: konvertieren von Zeilen in Spalten
Ich habe eine Tabelle mit Spalten sales(int)
, month(int)
. Ich will abrufen die Summe der Umsätze entsprechend jeden Monat. Ich brauche ouput in form von 12 Säulen entsprechend jedem Monat, in dem es ein einzelner Datensatz, enthält der Umsatz für jede Spalte(Monat).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie einen Blick auf PIVOT für den Wechsel die Zeilen mit den Spalten. Dies verhindert, dass eine select-Anweisung, die für jeden Monat. So etwas wie dieses:
Nicht schön... aber funktioniert dies auch
Hier ist eine Alternative Methode zum schreiben der pivot, der gibt Ihnen ein wenig mehr Kontrolle (vor allem über die Spalte "Namen"). Es ist auch ein wenig leichter zu generieren dynamische SQL für.
Es ist ähnlich wie Robin ' s Antwort, hat aber den Vorteil, dass Sie nur das schlagen der Tisch einmal:
Ich habe einige der Untersuchung, und es scheint, wie die neue pivot-operator ist nur syntax sugar für diese Art von Abfrage. Der query-Pläne am Ende Aussehen identisch.
Als interessante beiseite, der unpivot-operator scheint auch nur syntax-Zucker. Zum Beispiel:
Wenn Sie eine Tabelle wie:
Können Sie schreiben:
Bekommen und die unpivoted Daten...
Können Sie es mit OLAP. Hier ist ein weiterer link zu MSDN-Dokumentation zum Thema.
Mit OLAP können Sie erstellen einen Würfel mit den Informationen, die Sie haben, mit dem layout, das Sie brauchen.
Wenn Sie nicht wollen, diesen Weg zu gehen, müssen Sie zum erstellen von übersichtstabellen mit .NET, Java, TransacSQL, oder Ihre bevorzugte Sprache zu manipulieren, um SQL Server-Daten.
Leicht transponieren von Spalten in Zeilen, die mit seinem Namen sollten Sie XML verwenden. In meinem blog habe ich beschrieben wurde dies mit einem Beispiel: Link