Có một số cách khác nhau để bạn có thể đạt được kết quả như ý muốn. Tương tự với @Sheela K R's câu trả lời là bạn có thể sử dụng hàm tổng hợp với biểu thức CASE nhưng nó có thể được viết theo cách ngắn gọn hơn:
select
max(case when rowid = 1 then first end) First1,
max(case when rowid = 1 then last end) Last1,
max(case when rowid = 2 then first end) First2,
max(case when rowid = 2 then last end) Last2,
max(case when rowid = 3 then first end) First3,
max(case when rowid = 3 then last end) Last3,
max(case when rowid = 4 then first end) First4,
max(case when rowid = 4 then last end) Last4,
max(case when rowid = 5 then first end) First5,
max(case when rowid = 5 then last end) Last5
from yourtable;
Xem SQL Fiddle with Demo .
Điều này cũng có thể được viết bằng cách sử dụng hàm PIVOT, tuy nhiên, vì bạn muốn xoay nhiều cột nên trước tiên bạn sẽ muốn xem xét việc giải nén First
của mình và Last
cột.
Quá trình bỏ chia sẻ sẽ chuyển đổi nhiều cột của bạn thành nhiều hàng dữ liệu. Bạn không chỉ định phiên bản SQL Server bạn đang sử dụng nhưng bạn có thể sử dụng SELECT
với UNION ALL
với CROSS APPLY
hoặc thậm chí là UNPIVOT
chức năng thực hiện chuyển đổi đầu tiên:
select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply
(
select 'First', First union all
select 'Last', Last
) c (col, value)
Xem SQL Fiddle with Demo . Điều này chuyển đổi dữ liệu của bạn sang định dạng:
| COL | VALUE |
|--------|-------------|
| First1 | RandomName1 |
| Last1 | RandomLast1 |
| First2 | RandomName2 |
| Last2 | RandomLast2 |
Khi dữ liệu ở nhiều hàng, bạn có thể dễ dàng áp dụng hàm PIVOT:
select First1, Last1,
First2, Last2,
First3, Last3,
First4, Last4,
First5, Last5
from
(
select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply
(
select 'First', First union all
select 'Last', Last
) c (col, value)
) d
pivot
(
max(value)
for col in (First1, Last1, First2, Last2,
First3, Last3, First4, Last4, First5, Last5)
) piv;
Cả hai đều cho kết quả là:
| FIRST1 | LAST1 | FIRST2 | LAST2 | FIRST3 | LAST3 | FIRST4 | LAST4 | FIRST5 | LAST5 |
|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|
| RandomName1 | RandomLast1 | RandomName2 | RandomLast2 | RandomName3 | RandomLast3 | RandomName4 | RandomLast4 | RandomName5 | RandomLast5 |