Maison > base de données > tutoriel mysql > Comment faire pivoter dynamiquement des données dans SQL Server à l'aide d'une requête dynamique ?

Comment faire pivoter dynamiquement des données dans SQL Server à l'aide d'une requête dynamique ?

Barbara Streisand
Libérer: 2025-01-25 18:56:09
original
158 Les gens l'ont consulté

How to Dynamically Pivot Data in SQL Server Using a Dynamic Query?

Données pivot dynamiques dans SQL Server à l'aide de requêtes dynamiques

Cet article explique comment convertir les données des colonnes de date, de catégorie et de montant dans un format plus structuré qui regroupe les montants par date et par catégorie.

À cette fin, des requêtes pivot dynamiques peuvent être utilisées. Le pivotement est une fonction de SQL Server qui vous permet de faire pivoter les lignes d'une table en colonnes. Dans ce cas, le point pivot est la colonne date et la colonne résultante sera la catégorie.

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);</code>
Copier après la connexion

Pour construire une requête pivot dynamique, nous définissons d'abord deux variables : @cols pour contenir les catégories, et @query pour stocker la requête finale.

<code class="language-sql">SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')</code>
Copier après la connexion

Ensuite, nous construisons les variables @cols en concaténant les différentes catégories avec des virgules, en nous assurant qu'elles sont placées entre guillemets doubles.

<code class="language-sql">set @query = 'SELECT date, ' + @cols + ' from 
            (
                select date
                    , amount
                    , category
                from temp
           ) x
            pivot 
            (
                 max(amount)
                for category in (' + @cols + ')
            ) p '</code>
Copier après la connexion

Enfin, nous attribuons la chaîne de requête à @query. La requête commence par sélectionner la colonne de date et toutes les catégories en tant que colonnes. Il utilise ensuite PIVOT pour faire pivoter les données, avec la colonne de date comme en-tête de ligne et la catégorie comme en-tête de colonne.

<code class="language-sql">execute(@query)</code>
Copier après la connexion

L'exécution de @query renverra les résultats souhaités, en faisant pivoter les données selon les besoins.

<code>日期                        ABC         DEF    GHI
2012-01-01 00:00:00.000     1000.00     NULL    NULL
2012-02-01 00:00:00.000     NULL        500.00  800.00
2012-02-10 00:00:00.000     NULL        700.00  NULL
2012-03-01 00:00:00.000     1100.00     NULL    NULL</code>
Copier après la connexion

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