Ich habe eine Tabelle mit den Spalten sales(int)
, month(int)
. Ich möchte die Summe der Verkäufe, die jedem Monat entsprechen, abrufen. Ich muss in Form von 12 Spalten ausgeben, die jedem Monat entsprechen, in dem es einen einzelnen Datensatz gibt, der Verkäufe für jede Spalte (Monat) enthält.
Sie sollten sich PIVOT ansehen, um Zeilen mit Spalten zu wechseln. Dies verhindert eine Select-Anweisung für jeden Monat. Etwas wie das:
%Vor%Hier ist eine alternative Möglichkeit, den Pivot zu schreiben, der Ihnen ein wenig mehr Kontrolle gibt (besonders über die Spaltennamen). Es ist auch ein wenig einfacher, dynamisches SQL zu generieren.
Es ist ähnlich wie Robins Antwort, hat aber den Vorteil, nur einmal auf den Tisch zu schlagen:
%Vor%Ich habe einige Nachforschungen angestellt, und es sieht so aus, als ob der neue Pivot-Operator nur die Syntax Zucker für diese Art von Abfrage ist. Die Abfragepläne sehen identisch aus.
Als interessanter Nebenaspekt scheint der Unpivot-Operator auch nur Syntaxzucker zu sein. Zum Beispiel:
Wenn Sie eine Tabelle haben wie:
%Vor%Sie können schreiben:
%Vor%Und holen Sie die nicht freigegebenen Daten ...
Sie können es mit OLAP machen. Hier finden Sie einen weiteren Link zur MSDN-Dokumentation zum Thema.
Mit OLAP können Sie einen Würfel mit den von Ihnen benötigten Informationen mit dem von Ihnen benötigten Layout erstellen.
Wenn Sie nicht auf diese Weise arbeiten möchten, müssen Sie Übersichtstabellen mit .NET, Java, TransacSQL oder Ihrer bevorzugten Sprache erstellen, um SQLServer-Daten zu bearbeiten.
Tags und Links sql-server tsql rows