6
votes

Comment transformer les lignes en colonnes dans SQL Server 2005

Il y a un Question ici Dans Stackoverflow avec le même titre, mais ce n'est pas ce que je cherche.
J'ai une table comme celle ci-dessous xxx

J'ai besoin de trasformer ce résultat défini dans quelque chose comme celui-ci xxx

Comment puis-je accomplir cela Utilisation de SQL Server 2005?


0 commentaires

3 Réponses :


2
votes

voir Utilisation de pivot et d'impulsion .

Vous pouvez utiliser le pivot et pivot opérateurs relationnels pour changer un expression de la table à une autre tableau. pivot 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 effectue l'opération opposée à Pivot en tournant des colonnes d'un expression de la table à la table dans la colonne valeurs.

La réponse rapide est xxx


0 commentaires

5
votes

Il existe des questions similaires ici , ici répondit à Stackoverflow. strong>

Vous devez utiliser l'opérateur Pivot strong> dans votre requête pour obtenir cela. Elle est la Exemple et explication sur la façon dont vous pouvez le faire. L'exemple est référencé de cette forte> source. p> xxx pré>

explication forte> p>

1.La première partie de la requête p> xxx pré>

Vous donne un bon résultat aplatie de vos valeurs de colonne NAME en une seule ligne, comme suivez P> xxx pré>

Vous pouvez en apprendre davantage sur le truc et le chemin XML ici et ici . strong> p>

2. Sélectionnez + @Cols + de Code> Sélectionnera toutes les lignes comme noms Coloumn pour le jeu de résultats final (PVT-STEP 3) P>

IE P>

Chery | Drew | Morgon | Kath | Kirk | Matt  
-------------------------------------------  
257     1500     13      500    200    76


1 commentaires

+1, grande solution et réponse. Remarque, le Top 100% peut être modifié en Top 30 ou autre, vous ne dépassez pas le nombre de colonnes si vous avez beaucoup de lignes.



0
votes

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

*/


0 commentaires