Heim > Datenbank > MySQL-Tutorial > Wie kann man tabellarische Daten in SQL durch Verketten von Spalten und Summieren von Werten Pivotisieren?

Wie kann man tabellarische Daten in SQL durch Verketten von Spalten und Summieren von Werten Pivotisieren?

Barbara Streisand
Freigeben: 2025-01-04 17:39:41
Original
475 Leute haben es durchsucht

How to Pivot Tabular Data in SQL by Concatenating Columns and Summing Values?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage