Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Transposer un ensemble de lignes en colonnes dans SQL Server 2000

L'exemple sur http://jdixon.dotnetdevelopersjournal.com/pivot_table_data_in_sql_server_2000_and_2005.htm ne fonctionne que si vous savez à l'avance quelles peuvent être les valeurs des lignes. Par exemple, supposons que vous ayez une entité avec des attributs personnalisés et que les attributs personnalisés soient implémentés sous forme de lignes dans une table enfant, où la table enfant est essentiellement des paires variable/valeur, et ces paires variable/valeur sont configurables.

color red
size  big
city  Chicago

Je vais décrire une technique qui fonctionne. Je l'ai utilisé. Je n'en fais PAS la promotion, mais ça marche.

Pour faire pivoter les données dont vous ne connaissez pas les valeurs à l'avance, créez une table temporaire à la volée sans colonnes. Utilisez ensuite un curseur pour parcourir vos lignes, en émettant une "table alter" construite dynamiquement pour chaque variable, de sorte qu'à la fin, votre table temporaire ait les colonnes, la couleur, la taille, la ville.

Ensuite, vous insérez une ligne dans votre table temporaire, la mettez à jour via un autre curseur à travers la variable, les paires de valeurs, puis la sélectionnez, généralement jointe à son entité parente, ce qui donne l'impression que ces paires variable/valeur personnalisées étaient comme construites- dans les colonnes de l'entité parent d'origine.