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