Bạn có thể sử dụng UNPIVOT
chức năng chuyển các cột thành hàng:
select id, value
from yourtable
unpivot
(
value
for col in ([fName], [lName], [Address], [PostCode], [ContactNumber])
) unpiv
Xem SQL Fiddle với Demo .
Bỏ chia sẻ sẽ yêu cầu kiểu dữ liệu trên tất cả các cột phải giống nhau. Vì vậy, bạn có thể phải thực hiện cast
/ convert
trên bất kỳ cột nào có các kiểu dữ liệu khác nhau tương tự như sau:
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;
Xem SQL Fiddle với Demo .
Bắt đầu từ SQL Server 2008, điều này cũng có thể được viết bằng cách sử dụng CROSS APPLY
với VALUES
:
select t.id,
c.value
from yourtable t
cross apply
(
values(fName),
(lName),
(Address),
(PostCode),
(cast(ContactNumber as varchar(15)))
) c (value)