Maison >base de données >tutoriel mysql >Comment convertir des lignes en colonnes dans SQL Server à l'aide de PIVOT ?
Utilisation de la fonction PIVOT de SQL Server pour restructurer les données
La puissante fonction PIVOT
de SQL Server offre un moyen simplifié de transformer les données d'une structure basée sur des lignes en une structure basée sur des colonnes. Ceci est particulièrement utile pour créer des rapports tabulaires plus facilement lisibles et analysés.
Imaginez un tableau avec des numéros de magasin, des numéros de semaine et une valeur (appelons-le xCount
). L'objectif est de réorganiser ces données afin que les numéros de magasin soient répertoriés verticalement (lignes) et les numéros de semaines horizontalement (colonnes).
PIVOT statique (numéros de semaine connus) :
Si vous connaissez déjà les numéros de semaine spécifiques dont vous avez besoin, une requête PIVOT
simple peut être utilisée :
<code class="language-sql">SELECT * FROM ( SELECT store, week, xCount FROM yt ) src PIVOT (SUM(xcount) FOR week IN ([1], [2], [3])) piv;</code>
Cette requête additionne les valeurs xCount
pour chaque magasin et chaque semaine. La clause IN
précise les semaines ([1], [2], [3] dans cet exemple).
PIVOT dynamique (numéros de semaine inconnus) :
Lorsque les numéros de semaines sont dynamiques (non connus à l'avance), une approche plus flexible s'impose :
<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>
Cette requête dynamique crée d'abord une liste de numéros de semaine uniques, séparés par des virgules, à partir de la table yt
. Cette liste est ensuite incorporée dans une requête plus large qui utilise la fonction PIVOT
pour créer la sortie souhaitée basée sur les colonnes. Le résultat est un tableau croisé dynamique affichant les magasins sous forme de lignes et les semaines sous forme de colonnes, avec les valeurs xCount
correspondantes. Cette méthode s'adapte à n'importe quel nombre de semaines présentes dans les 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!