Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query SQL per ottenere il set di risultati solo in due colonne

Puoi utilizzare UNPIVOT funzione per trasformare le colonne in righe:

select id, value
from yourtable
unpivot
(
  value
  for col in ([fName], [lName], [Address], [PostCode], [ContactNumber])
) unpiv

Vedi SQL Fiddle con demo .

Il unpivot richiederà che il tipo di dati su tutte le colonne sia lo stesso. Quindi potresti dover eseguire un cast /convert su qualsiasi colonna con tipi di dati diversi simili a questo:

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;

Vedi SQL Fiddle con demo .

A partire da SQL Server 2008, questo può anche essere scritto usando un CROSS APPLY con un VALUES :

select t.id,
  c.value
from yourtable t
cross apply
(
  values(fName), 
    (lName), 
    (Address), 
    (PostCode), 
    (cast(ContactNumber as varchar(15)))
) c (value)

Vedi SQL Fiddle con demo