SQL Server: Konvertiere Zeilen in Spalten

8

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.

    
Maddy.Shik 29.04.2009, 11:20
quelle

5 Antworten

10

Sie sollten sich PIVOT ansehen, um Zeilen mit Spalten zu wechseln. Dies verhindert eine Select-Anweisung für jeden Monat. Etwas wie das:

%Vor%     
Ronald Wildenberg 29.04.2009, 11:28
quelle
2

Nicht hübsch ... aber das funktioniert gut

%Vor%     
Robin Day 29.04.2009 11:26
quelle
2

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 ...

    
John Gibb 01.05.2009 00:17
quelle
1

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.

    
Pablo Santa Cruz 29.04.2009 11:29
quelle
0

Um Spalten in Zeilen mit ihren Namen zu transponieren, sollten Sie XML verwenden. In meinem Blog wurde ich mit Beispiel beschrieben: Link

>     
Dalex 08.04.2011 13:34
quelle

Tags und Links