Maison > base de données > tutoriel mysql > Comment faire pivoter dynamiquement des données dans SQL Server avec des colonnes dynamiques ?

Comment faire pivoter dynamiquement des données dans SQL Server avec des colonnes dynamiques ?

DDD
Libérer: 2024-12-31 11:47:10
original
178 Les gens l'ont consulté

How to Dynamically Pivot Data in SQL Server with Dynamic Columns?

PIVOT SQL Server dynamique pour les colonnes dynamiques

Vous disposez d'un ensemble de données avec plusieurs colonnes (« Nom1 » et « Nom2 ») et une valeur colonne (« Valeur »). Vous souhaitez transformer ces données dans un format pivoté où « Nom1 » devient les en-têtes de colonne et les valeurs sont agrégées par « Nom2 ».

Solution avec Dynamic SQL (SQL Server 2005 ou version ultérieure)

Étant donné que SQL Server 2005 autorise le SQL dynamique, vous pouvez résoudre ce problème en assemblant dynamiquement la requête PIVOT. Voici le code :

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )
Copier après la connexion

Cette requête fonctionnera de manière dynamique, quel que soit le nombre de valeurs 'Name1' uniques dont vous disposez. Il attribue les valeurs « Name1 » collectées à la variable @cols, qui est ensuite utilisée pour construire dynamiquement la clause PIVOT dans la variable @sqlquery. La requête finale est ensuite exécutée, produisant le résultat souhaité.

Ressources supplémentaires :

  • [Données pivots en T-SQL](https://www .mssqltips.com/sqlservertip/1355/pivot-data-in-tsql/)
  • [Comment créer un résumé en rejoignant à une seule table avec SQL Server ?](https://stackoverflow.com/questions/260660/how-do-i-build-a-summary-by-joining-to-a-single-table-with-sql- serveur)
  • [PIVOT dynamique avec dynamique colonnes](https://stackoverflow.com/questions/8248059/pivot-with-dynamic-columns-in-sql-server-2005)

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal