Il y a un Question ici Dans Stackoverflow avec le même titre, mais ce n'est pas ce que je cherche. J'ai besoin de trasformer ce résultat défini dans quelque chose comme celui-ci p> Comment puis-je accomplir cela Utilisation de SQL Server 2005? P> P>
J'ai une table comme celle ci-dessous
3 Réponses :
voir Utilisation de pivot et d'impulsion .
Vous pouvez utiliser le
pivot code> et
pivot code> opérateurs relationnels pour changer un expression de la table à une autre tableau.
pivot code> tourne une table-valorisée expression en tournant l'unique valeurs d'une colonne dans la expression dans plusieurs colonnes dans la sortie et effectue des agrégations où ils sont nécessaires sur tout Valeurs de colonne restantes qui sont recherché dans la sortie finale.
pivot code> effectue l'opération opposée à Pivot en tournant des colonnes d'un expression de la table à la table dans la colonne valeurs. p> blockQuote>
La réponse rapide est p>
xxx pré> p>
Il existe des questions similaires ici , ici répondit à Stackoverflow. strong> Vous devez utiliser l'opérateur 1.La première partie de la requête p> Vous donne un bon résultat aplatie de vos valeurs de colonne NAME en une seule ligne, comme suivez P> 2. IE P> Sélectionnez + @Cols + de Code> Sélectionnera toutes les lignes comme noms Coloumn pour le jeu de résultats final (PVT-STEP 3) P>
Chery | Drew | Morgon | Kath | Kirk | Matt
-------------------------------------------
257 1500 13 500 200 76
+1, grande solution et réponse. Remarque, le Top 100% code> peut être modifié en
Top 30 code> ou autre, vous ne dépassez pas le nombre de colonnes si vous avez beaucoup de lignes.
Si vous voulez éviter tout compliqué comme un pivot ou la réponse acceptée, vous pouvez le faire! (La plupart du code ne constituent que la configuration des données de test au cas où tout le monde veut l'essayer)
/* set up your test table */ declare @TestData table (Name Varchar(80),[Count] int) insert into @TestData (Name, [count]) Select 'Chery' as name, 257 as [count] union all select 'Drew', 1500 union all select 'Morgon',13 union all select 'Kath', 500 union all select 'Kirk', 200 union all select 'Matt', 76 /* the query */ Declare @Query Varchar(max) Select @Query=Coalesce(@query+', ','SELECT ') +Convert(VarChar(5),[count]) +' as ['+name+']' from @TestData Execute (@Query) /* result Chery Drew Morgon Kath Kirk Matt ----------- ----------- ----------- ----------- ----------- ----------- 257 1500 13 500 200 76 */