Fonction PIVOT de SQL Server : convertissez les lignes en colonnes, gérez les numéros de semaine statiques et dynamiques
Contexte :
Vous disposez d'un tableau temporaire avec plusieurs colonnes comprenant le numéro de magasin, le numéro de semaine et le total correspondant. Les numéros de semaine sont dynamiques, ce qui rend difficile la conversion des données dans un format tabulaire.
Solution :
Pour utiliser la fonction PIVOT
dans SQL Server pour convertir des lignes en colonnes, procédez comme suit :
1. Numéro de semaine statique :
Si le numéro de la semaine est connu, utilisez la requête codée en dur suivante :
<code class="language-sql">SELECT * FROM ( SELECT store, week, xCount FROM yt ) src PIVOT ( SUM(xcount) FOR week IN ([1], [2], [3]) ) piv;</code>
2. Numéro de semaine dynamique :
Si le numéro de semaine est dynamique, utilisez du SQL dynamique :
<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>
Résultat :
Les deux requêtes renvoient un tableau croisé dynamique avec le numéro du magasin à gauche et le numéro de la semaine en haut. Chaque cellule contient la somme de "xCount" pour le magasin et le numéro de semaine correspondants.
<code>| STORE | 1 | 2 | 3 | --------------------------- | 101 | 138 | 282 | 220 | | 102 | 96 | 212 | 123 | | 105 | 37 | 78 | 60 | | 109 | 59 | 97 | 87 |</code>
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!