Dynamisches SQL zum Generieren von Spaltennamen?

8

Ich habe eine Abfrage, bei der ich Pivot-Zeilenwerte in Spaltennamen versuche und derzeit verwende ich SUM(Case...) As 'ColumnName' -Anweisungen, so:

%Vor%

Die obige Abfrage funktioniert großartig und gibt mir genau das, was ich brauche. Wie auch immer, ich schreibe die SUM(Case... -Aussagen manuell auf Basis der Ergebnisse der folgenden Abfrage:

%Vor%

Gibt es eine Möglichkeit, T-SQL innerhalb einer gespeicherten Prozedur zu verwenden, dass ich die SUM(Case... -Anweisungen dynamisch aus der Select Distinct Sku2 From OrderDetailDeliveryReview -Abfrage erzeugen und dann den resultierenden SQL-Code ausführen kann?

    
Ben McCormack 31.03.2010, 16:48
quelle

4 Antworten

10

Wenn Sie im Laufe der Jahre viele davon beantwortet haben, indem Sie dynamisches Pivot-SQL aus den Metadaten generiert haben, werfen Sie einen Blick auf diese Beispiele:

SQL Dynamic Pivot - wie Spalten zu sortieren

SQL Server 2005 Pivot für unbekannte Anzahl von Spalten

Welche SQL-Abfrage oder Ansicht zeigt "dynamische Spalten" an?

Wie aktiviere ich? die Attribute einer XML-Spalte in T-SQL

Wie man den DRY anwendet Prinzip zu SQL-Anweisungen, die Pivot Monate

In Ihrem speziellen Fall (mit dem ANSI-Pivot anstelle der PIVOT-Funktion von SQL Server 2005):

%Vor%     
Cade Roux 31.03.2010, 17:32
quelle
2

Ich weiß, dass SO Suchmaschine nicht perfekt ist, aber Ihre Frage wurde in SQL Server beantwortet PIVOT-Spaltendaten .
Siehe auch Cross Tab erstellen Abfragen und Pivot-Tabellen in SQL .

    
van 31.03.2010 17:03
quelle
1

Warum verwenden Sie hart codierte Spaltennamen, wenn Sie all das dynamisch aus einer Tabelle ziehen können?

Mit UNPIVOT und COALESCE kann ich dynamisch eine Liste von Spalten aus beliebigen Tabellen und zugehörigen Spaltenwerten für jeden Datensatz in einer Datensatzliste ziehen und sie in einer Liste von Spaltennamen mit Werten nach Zeile kombinieren. Hier ist der Code. Geben Sie einfach Ihren Datenbank- und Tabellennamen ein. Die Spalten- / Wertetabelle wird für Sie in SQL Server erstellt. Denken Sie daran, eine gemeinsame Spalte mit Werten für die Spalten zu erhalten, die Sie in SQL-Varianten oder Textzeichenfolgen konvertieren möchten. Aber eine gute Möglichkeit, eine Beispielspaltenliste von Werten mit übereinstimmenden Spaltennamen und -typen mit unseren while-Schleifen oder Cursors zu erhalten. Es ist ziemlich schnell:

%Vor%     
Mitch Stokely 17.05.2012 20:01
quelle
0
%Vor%     
madhusudan 08.01.2016 07:43
quelle