Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consulta SQL para obter o conjunto de resultados em apenas duas colunas


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