Você pode usar o
UNPIVOT
função para transformar as colunas em linhas:select id, value
from yourtable
unpivot
(
value
for col in ([fName], [lName], [Address], [PostCode], [ContactNumber])
) unpiv
Consulte SQL Fiddle with Demo .
A desarticulação exigirá que o tipo de dados em todas as colunas seja o mesmo. Então você pode ter que realizar um
cast
/converter
em qualquer coluna com diferentes tipos de dados semelhantes a este: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;
Consulte SQL Fiddle with Demo .
A partir do SQL Server 2008, isso também pode ser escrito usando um
CROSS APPLY
com um VALUES
:select t.id,
c.value
from yourtable t
cross apply
(
values(fName),
(lName),
(Address),
(PostCode),
(cast(ContactNumber as varchar(15)))
) c (value)
Consulte SQL Fiddle with Demo