Maison > base de données > tutoriel mysql > Comment créer dynamiquement un tableau croisé dynamique avec des colonnes concaténées dans SQL Server ?

Comment créer dynamiquement un tableau croisé dynamique avec des colonnes concaténées dans SQL Server ?

Patricia Arquette
Libérer: 2025-01-05 14:32:41
original
518 Les gens l'ont consulté

How to Dynamically Create a Pivot Table with Concatenated Columns in SQL Server?

Tableau croisé dynamique et concaténer des colonnes dans SQL Server

La transformation des tables de base de données pour afficher les données de manière plus organisée et significative est souvent nécessaire pour les données analyse et présentation. Dans ce cas précis, le but est de créer un "tableau croisé dynamique" à partir d'une table de base de données, où les colonnes TYPE et SUBTYPE sont concaténées dans de nouvelles colonnes et les valeurs COUNT sont agrégées par les colonnes ID et MOIS.

Comprendre l'opérateur PIVOT

SQL Server propose l'opérateur PIVOT, qui vous permet de transformer des données à partir d'un format orienté ligne. format vers un format orienté colonne. Il vous permet de regrouper les données par une ou plusieurs colonnes et de créer de nouvelles colonnes basées sur les valeurs d'une autre colonne.

Génération dynamique de colonnes pivotantes

Dans le scénario donné , il existe potentiellement des « centaines » de combinaisons TYPE et SUBTYPE, ce qui rend peu pratique le codage en dur des colonnes pivot. Pour surmonter ce problème, le SQL dynamique peut être utilisé pour générer la liste des colonnes pivot en fonction des combinaisons uniques de valeurs TYPE et SUBTYPE.

Implémentation du SQL dynamique

Le SQL suivant le code montre comment générer dynamiquement les colonnes pivot et exécuter l'opération PIVOT :

DECLARE @sql AS NVARCHAR(MAX);
DECLARE @pivot_list AS NVARCHAR(MAX) = NULL;  -- Leave NULL for COALESCE technique
DECLARE @select_list AS NVARCHAR(MAX) = NULL; -- Leave NULL for COALESCE technique

-- Build the pivot column list and select list
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 YourTableName
) AS PIVOT_CODES;

-- Generate the dynamic SQL query
SET @sql = '
WITH P AS (
    SELECT ID, [MONTH], TYPE + ''_'' + SUBTYPE AS PIVOT_CODE, SUM(COUNT) AS [COUNT]
    FROM YourTableName
    GROUP BY ID, [MONTH], TYPE + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM P
PIVOT (
    SUM([COUNT])
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS PVT';

-- Execute the dynamic SQL query
EXEC (@sql);
Copier après la connexion

Avantages de l'utilisation SQL dynamique

En utilisant le SQL dynamique, les colonnes pivot sont générées automatiquement, éliminant ainsi le besoin de concaténation manuelle. Cette approche est flexible et peut être appliquée aux tableaux avec de nombreuses combinaisons TYPE et SUBTYPE.

Remarque :

Le code ci-dessus utilise la fonction COALESCE pour concaténer la liste des colonnes pivot. et sélectionnez la liste. Alternativement, vous pouvez spécifier manuellement l'opérateur de concaténation (',' ou ';') selon vos besoins.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal