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.
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>
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>
Résultat :
Les deux méthodes produisent le même résultat :
| 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!