Concaténation de tableaux croisés dynamiques et de colonnes
Question :
Comment puis-je transformer une table de base de données avec la structure suivante :
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
dans un tableau avec ce qui suit structure :
ID A_Z B_C MONTH 1 4 0 7/1/2008 2 0 2 7/2/2008 1 0 3 7/2/2008
où TYPE et SUBTYPE sont concaténés pour former de nouvelles colonnes (par exemple, "A_Z"), et COUNT est additionné pour faire correspondre les valeurs ID et MOIS ?
Réponse :
SQL Server 2005 fournit un opérateur PIVOT qui permet la transformation décrite dans le question. Voici une explication détaillée :
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 ';
Cette solution exploite le SQL dynamique pour construire la requête PIVOT basée sur les combinaisons uniques de valeurs TYPE et SUBTYPE, offrant une approche sans maintenance pour gérer plusieurs types et sous-types dans la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!