Maison > base de données > tutoriel mysql > Comment convertir les lignes en colonnes dans SQL Server à l'aide de la fonction PIVOT?

Comment convertir les lignes en colonnes dans SQL Server à l'aide de la fonction PIVOT?

Barbara Streisand
Libérer: 2025-01-25 12:32:10
original
681 Les gens l'ont consulté

How to Convert Rows to Columns in SQL Server Using the PIVOT Function?

Convertir les lignes en colonnes à l'aide de la fonction PIVOT dans SQL Server

Question

Les tableaux croisés dynamiques dans SQL Server offrent un moyen puissant de transposer les données des lignes en colonnes. Cependant, les utilisateurs peuvent rencontrer des difficultés pour créer des requêtes correctes.

Solution

Utilisez la fonction PIVOT sur les valeurs de colonnes connues :

Pour les valeurs de colonnes prédéfinies (les numéros de semaine dans ce cas), vous pouvez utiliser directement la fonction PIVOT :

<code class="language-sql">select *
from 
(
  select store, week, xCount
  from yt 
) src
pivot
(
  sum(xcount)
  for week in ([1], [2], [3])
) piv;</code>
Copier après la connexion

Générer dynamiquement les valeurs des colonnes pivot :

Pour gérer les valeurs de colonnes inconnues (telles que les numéros de semaine dynamiques), vous pouvez utiliser une combinaison de fonctions SQL dynamiques et de fenêtres :

<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,'')

set @query = 'SELECT store,' + @cols + ' from 
             (
                select store, week, xCount
                from yt
            ) x
            pivot 
            (
                sum(xCount)
                for week in (' + @cols + ')
            ) p '

execute(@query);</code>
Copier après la connexion

Résultat :

Les deux méthodes produisent le même résultat :

| Boutique | 1 | 2 |

|101 | 138 | 282 |

| 102 | 96 | 212 | 123 |
| 105 | 37 | 78 | 60 |
| 109 | 59 | 97 | 87 |

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 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