Используя SQL, как мне преобразовать таблицу из одной строки следующим образом ...
Firstname Surname Address1 City Country
--------- ------- --------------- ------ -------
Bob Smith 101 High Street London UK
... в таблицу из имя-значение таких пар:
Name Value
--------- -------
Firstname Bob
Surname Smith
Address1 101 High Street
City London
Country UK
Этот скрипт создаст исходную таблицу:
create table #OriginalTable (Firstname varchar(10), Surname varchar(10),
Address1 varchar(50), City varchar(10), Country varchar(10))
insert into #OriginalTable
select
'Bob' Firstname,
'Smith' Surname,
'101 High Street' Address1,
'London' City,
'UK' Country
Мне нужно общее решение, которое не зависит от того, какие имена столбцов всегда совпадают с именами в примере.
EDIT:
Я использую SQL Server 2005.
Решение, которое мне нужно, - это сценарий SQL для преобразования этих данных в таблицу пар имя-значение
Ответ:
Используя ответ, который я принял в качестве ответа, вот что я использовал:
select
result.Name,
result.Value
from
(select
convert(sql_variant,FirstName) AS FirstName,
convert(sql_variant,Surname) AS Surname,
convert(sql_variant,Address1) AS Address1,
convert(sql_variant,City) AS City,
convert(sql_variant,Country) AS Country
from #OriginalTable) OriginalTable
UNPIVOT (Value For Name In (Firstname, Surname, Address1, City, Country)) as result