2016-07-19 9 views
0

Ich verwende Excel VBA, um eine In-Blatt-Abfrage durchzuführen, einschließlich eines Transform/Pivot-Befehls. Bitte sehen Sie unten für eine vereinfachte Version.Spalten in Excel neu anordnen SQL Transorm/Pivot

Transform First([Description]) 
Select [ID],[Sale Status] 
From [Data$] 
Group by [ID],[Sale Status] 
Pivot TimePeriod in ([2015],[2016],[2017]) 

Das erste Beispiel funktioniert ziemlich gut und macht, was ich will. Das einzige Problem, das ich habe, ist, dass ich die Zeitperiodenspalten zwischen der ID und dem Verkaufsstatus auf Anfrage des Kunden setzen möchte. Ich kann wahrscheinlich eine andere Select-Anweisung außerhalb der Transformation ausführen, aber ich möchte keine zusätzliche Crunch-Zeit hinzufügen, wenn sie vermieden werden kann. Ich habe solche Dinge ausprobiert, aber es hat Fehler verursacht.

Transform First([Description]) 
Select [ID],[2015],[2016],[2017],[Sale Status] 
From [Data$] 
Group by [ID],[Sale Status] 
Pivot TimePeriod in ([2015],[2016],[2017]) 

Weiß jemand, ob dies getan werden kann? Danke

Antwort

0

Dies scheint zwielichtig, wie es scheint, dass Sie Werte einer Spalte als Spaltenüberschriften im Gegensatz zu Spalten selbst auswählen möchten/müssen;

Ich denke, Sie wären besser dran mit einer Select-Anweisung, die die gewünschten Daten in den Pivot aufnimmt, diese Daten dann in ein Arbeitsblatt einfügt und die Pivot-Tabelle manuell in einem zweiten Arbeitsblatt erstellt.

Das scheint keine große Antwort zu sein, aber ich habe Schwierigkeiten, mir vorzustellen, wie die Daten aussehen könnten; Wenn Sie ein Beispiel für die Daten angeben können, kann ich möglicherweise einen Vorschlag machen.

0

Verwenden Sie die bedingte Aggregation anstelle der Transformationsabfrage, da die Anordnung der Spalten nicht so funktionieren kann, wie Sie beabsichtigen, die Kreuztabelle zu verwenden. Nebenbei bemerkt, ist dies in der Regel die Möglichkeit, Daten in SQL zu pivotieren, da es sich bei TRANSFORM ausschließlich um eine Jet/ACE SQL-spezifische Methode handelt.

SELECT [ID], First(IIF(TimePeriod = 2015, [Description], NULL)) As [2015], 
      First(IIF(TimePeriod = 2016, [Description], NULL)) As [2016], 
      First(IIF(TimePeriod = 2017, [Description], NULL)) As [2017], 
     [Sales Status] 
FROM [Data$] 
GROUP BY [ID], [Sale Status] 
Verwandte Themen