Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Abfrage, um die Ergebnismenge nur in zwei Spalten zu erhalten

Sie können den UNPIVOT Funktion, um die Spalten in Zeilen umzuwandeln:

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

Siehe SQL Fiddle mit Demo .

Das Unpivot erfordert, dass der Datentyp in allen Spalten gleich ist. Daher müssen Sie möglicherweise einen cast durchführen /konvertieren auf alle Spalten mit unterschiedlichen Datentypen, die diesem ähnlich sind:

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;

Siehe SQL Fiddle mit Demo .

Ab SQL Server 2008 kann dies auch mit einem CROSS APPLY geschrieben werden mit einem VALUES :

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

Siehe SQL Fiddle mit Demo