Maison >base de données >tutoriel mysql >Comment puis-je utiliser la fonction de pivot de SQL Server pour transformer les lignes en colonnes?

Comment puis-je utiliser la fonction de pivot de SQL Server pour transformer les lignes en colonnes?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-25 12:17:14754parcourir

How Can I Use SQL Server's PIVOT Function to Transform Rows into Columns?

Maîtriser la fonction PIVOT de SQL Server pour la transformation des données

La fonction PIVOT de SQL Server offre un moyen puissant de restructurer les données, en transformant les lignes en colonnes pour une analyse et un reporting améliorés. Ceci est particulièrement utile lorsque vous devez présenter les données dans un format tabulaire plus convivial.

Imaginez un tableau temporaire contenant les chiffres des ventes, avec des colonnes pour le numéro de magasin, le numéro de semaine et le montant des ventes. Pour afficher ces données avec les magasins répertoriés verticalement et les semaines horizontalement, procédez comme suit :

1. Identifier dynamiquement les numéros de semaine

Étant donné que les numéros de semaine sont variables, nous devons d'abord déterminer les numéros de semaine uniques présents dans l'ensemble de données. Ceci peut être réalisé en utilisant :

<code class="language-sql">SELECT DISTINCT Week FROM yt;</code>

2. Construction de requêtes SQL dynamiques

Ensuite, nous construisons la requête SQL dynamique. Cela implique la création d'une chaîne contenant les noms de colonnes pour l'opération PIVOT. Le code suivant génère cette chaîne :

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query AS NVARCHAR(MAX);

SELECT @cols = STUFF((SELECT ',' + QUOTENAME(Week) 
                    FROM yt
                    GROUP BY Week
                    ORDER BY Week
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'');</code>

3. Construire la requête PIVOT

Maintenant, nous construisons la requête PIVOT elle-même, en incorporant la chaîne de colonne générée dynamiquement :

<code class="language-sql">SET @query = 'SELECT store,' + @cols + ' FROM 
             (
                SELECT store, week, xCount
                FROM yt
            ) x
            PIVOT 
            (
                SUM(xCount)
                FOR week IN (' + @cols + ')
            ) p;';</code>

4. Exécution de la requête PIVOT

Enfin, exécutez la requête PIVOT dynamique en utilisant :

<code class="language-sql">EXECUTE(@query);</code>

Résultats :

Le résultat sera un tableau affichant les numéros de magasin dans la première colonne et les numéros de semaine comme en-têtes de colonne. Les montants des ventes correspondants rempliront les cellules du tableau, résumant efficacement les données originales.

En utilisant la fonction PIVOT de SQL Server, vous pouvez convertir efficacement les données orientées lignes dans un format de colonnes plus facilement interprété et analysé, simplifiant ainsi les tâches de reporting et d'analyse des 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!

Déclaration:
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