Concaténation de colonnes et pivotement de données avec SQL
Problème :
Vous avez une base de données avec colonnes représentant l'ID, le type, le sous-type, le nombre et le mois. Comment pouvez-vous convertir ces données dans un nouveau format dans lequel le type et le sous-type sont concaténés dans de nouvelles colonnes et le nombre est additionné pour chaque combinaison unique d'ID et de mois ?
Solution :
Pour obtenir cette sortie transformée, vous pouvez utiliser l'opérateur PIVOT dans SQL Server 2005. L'opérateur PIVOT vous permet de transposer dynamiquement des lignes en colonnes.
L'extrait de code suivant montre comment utiliser PIVOT pour obtenir le résultat souhaité :
DECLARE @sql AS varchar(max) DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique 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)
Détails de mise en œuvre :
L'exécution de la variable @sql renverra la table souhaitée avec colonnes concaténées et comptes additionnés. Cette solution permet une agrégation efficace et dynamique de données complexes.
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!