SQL Comment prendre de la valeur d'une colonne et la passer à une autre colonne

J'utilise SQL Server 2008 . Comment prendre de la valeur d'une colonne et la passer à une autre colonne?

Comme vous le voyez dans les exemples de données ci-dessous, il y a 4 colonnes. Où je dois prendre le nom de la colonne (dans ce cas, UserName ) et passer la colonne It à FieldName et la valeur de la colonne UserName à Value colonne Value .

ECHANTILLONNAGE

 GroupId UserName FieldName Value 1 John Smith Foo 28 1 John Smith Bar 2 1 John Smith FooBar 11 1 John Smith Bizz 22 2 Peter Jones Foo 4 2 Peter Jones Bar 13 2 Peter Jones FooBar 27 2 Peter Jones Bizz 23 

LES RÉSULTATS SOUHAITÉS

 GroupId FieldName Value 1 Foo 28 1 Bar 2 1 FooBar 11 1 Bizz 22 1 UserName John Smith 2 Foo 4 2 Bar 13 2 FooBar 27 2 Bizz 23 2 UserName Peter Jones 

Comment pourrais-je l'atteindre? En utilisant PIVOT ? Mais je ne suis pas sûr de savoir comment merge des données pivotées vers une colonne existante. Avez-vous des idées? Si quelque chose n'est pas clair – requestz-moi, je vais essayer de fournir plus de détails.

 select GroupId, FieldName, Value from table union select distinct GroupId, 'username', UserName from table 

Pas besoin de PIVOT , juste un simple UNION ALL fera le boulot:

 SELECT DISTINCT t.groupID,'USERNAME',t.userName FROM YourTable t UNION ALL SELECT s.groupID,s.FieldName,s.Value FROM YourTable s 
 SELECT DISTINCT t.* FROM tbl CROSS APPLY ( VALUES (GroupId, FieldName, Value), (GroupId, 'UserName', UserName) ) t(GroupId, FieldName, Value) 

Vérifiez également une petite information sur UNPIVOT et VALUES de mon message