Pivot-Tabelle und Spaltenverkettung
Frage:
Wie kann ich eine Datenbanktabelle transformieren? mit folgender Struktur:
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
in eine Tabelle mit folgendem Struktur:
ID A_Z B_C MONTH 1 4 0 7/1/2008 2 0 2 7/2/2008 1 0 3 7/2/2008
wobei TYPE und SUBTYPE verkettet werden, um neue Spalten zu bilden (z. B. „A_Z“), und COUNT für übereinstimmende ID- und MONTH-Werte summiert wird?
Antwort :
SQL Server 2005 bietet einen PIVOT-Operator, der die im beschriebene Transformation ermöglicht Frage. Hier ist eine detaillierte Erklärung:
DECLARE @sql AS varchar(max); 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 ';
Diese Lösung nutzt dynamisches SQL, um die PIVOT-Abfrage basierend auf den eindeutigen Kombinationen von TYPE- und SUBTYPE-Werten zu erstellen und bietet so einen wartungsfreien Ansatz für die Handhabung mehrerer Typen und Untertypen in der Datenbank.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Tabelle drehen und Spalten in SQL Server verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!