Vous pouvez utiliser le UNPIVOT
fonction pour transformer les colonnes en lignes :
select id, value
from yourtable
unpivot
(
value
for col in ([fName], [lName], [Address], [PostCode], [ContactNumber])
) unpiv
Voir SQL Fiddle avec démo .
Le unpivot exigera que le type de données de toutes les colonnes soit le même. Vous devrez donc peut-être effectuer un cast
/convert
sur toutes les colonnes avec différents types de données similaires à ceci :
select id, value
from
(
select id, [fName], [lName], [Address], [PostCode],
cast([ContactNumber] as varchar(15)) [ContactNumber]
from yourtable
) src
unpivot
(
value
for col in ([fName], [lName], [Address], [PostCode], [ContactNumber])
) unpiv;
Voir SQL Fiddle avec démo .
À partir de SQL Server 2008, cela peut également être écrit à l'aide d'un CROSS APPLY
avec un VALUES
:
select t.id,
c.value
from yourtable t
cross apply
(
values(fName),
(lName),
(Address),
(PostCode),
(cast(ContactNumber as varchar(15)))
) c (value)
Voir SQL Fiddle avec démo