Konvertieren von Tabellendaten in eine Pivot-Tabelle mit SQL: Verketten von Spalten
Bei der Datenbankverwaltung beinhaltet das Pivotieren von Tabellen die Transformation von Daten aus einem spaltenorientierten Format in ein zeilenorientiertes Format, wodurch die Tabelle effektiv „umgedreht“ wird. In diesem Artikel wird ein Szenario beschrieben, in dem Sie eine Tabelle mit mehreren Spalten in eine einzelne Spalte mit verketteten Werten aus den ursprünglichen Spalten umwandeln möchten.
Angenommen, Sie haben einen Datensatz mit Spalten für ID, TYPE, SUBTYPE, COUNT und MONAT, wie folgt angeordnet:
ID TYPE SUBTYPE COUNT MONTH 1 A Z 1 7/1/2008 1 A Z 3 7/1/2008 2 B C 2 7/2/2008 1 A Z 3 7/2/2008
Das Ziel besteht darin, diese Daten in eine Pivot-Tabelle umzuwandeln, in der die Spalten TYPE und SUBTYPE verkettet sind in eine neue Spalte und die COUNT-Werte werden für jede eindeutige Kombination aus ID und MONAT summiert. Die erwartete Ausgabe ist:
ID A_Z B_C MONTH 1 4 0 7/1/2008 2 0 2 7/2/2008 1 0 3 7/2/2008
SQL Server PIVOT-Lösung
SQL Server 2005 bietet leistungsstarke PIVOT- und UNPIVOT-Operatoren, die das Pivotieren von Daten vereinfachen. Das folgende Codebeispiel demonstriert die PIVOT-Technik:
DECLARE @sql AS varchar(max) DECLARE @pivot_list AS varchar(max) DECLARE @select_list AS varchar(max) SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']' ,@select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']' FROM ( SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE FROM stackoverflow_159456 ) AS PIVOT_CODES SET @sql = ' ;WITH p AS ( SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT] FROM stackoverflow_159456 GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE ) SELECT ID, [MONTH], ' + @select_list + ' FROM p PIVOT ( SUM([COUNT]) FOR PIVOT_CODE IN ( ' + @pivot_list + ' ) ) AS pvt ' EXEC (@sql)
Die in diesem Code verwendete dynamische SQL-Technik generiert automatisch die PIVOT-Anweisung basierend auf der eindeutigen Kombination von TYPE- und SUBTYPE-Werten, wodurch eine harte Codierung und Erstellung des Codes vermieden wird wartungsfrei.
Das obige ist der detaillierte Inhalt vonWie kann man tabellarische Daten in SQL durch Verketten von Spalten und Summieren von Werten Pivotisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!