Es gibt verschiedene Möglichkeiten, wie Sie das gewünschte Ergebnis erzielen können. Ähnlich wie @Sheela K R's Antwort Sie können eine Aggregatfunktion mit einem CASE-Ausdruck verwenden, aber sie kann kürzer geschrieben werden:
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;
Siehe SQL-Fiddle mit Demo .
Dies könnte auch mit der PIVOT-Funktion geschrieben werden, da Sie jedoch mehrere Spalten pivotieren möchten, sollten Sie sich zuerst das Unpivoting Ihres First
ansehen und Last
Säulen.
Der Unpivot-Prozess konvertiert Ihre mehreren Spalten in mehrere Datenzeilen. Sie haben nicht angegeben, welche Version von SQL Server Sie verwenden, aber Sie können ein SELECT
verwenden mit UNION ALL
mit CROSS APPLY
oder sogar das UNPIVOT
Funktion, um die erste Konvertierung durchzuführen:
select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply
(
select 'First', First union all
select 'Last', Last
) c (col, value)
Siehe SQL Fiddle mit Demo . Dadurch werden Ihre Daten in das Format:
umgewandelt| COL | VALUE |
|--------|-------------|
| First1 | RandomName1 |
| Last1 | RandomLast1 |
| First2 | RandomName2 |
| Last2 | RandomLast2 |
Sobald sich die Daten in mehreren Zeilen befinden, können Sie die PIVOT-Funktion ganz einfach anwenden:
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;
Siehe SQL Fiddle mit Demo
Beide geben ein Ergebnis von:
| FIRST1 | LAST1 | FIRST2 | LAST2 | FIRST3 | LAST3 | FIRST4 | LAST4 | FIRST5 | LAST5 |
|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|
| RandomName1 | RandomLast1 | RandomName2 | RandomLast2 | RandomName3 | RandomLast3 | RandomName4 | RandomLast4 | RandomName5 | RandomLast5 |