Frage
Meine Tabelle hat die folgenden Spalten:
A | B | C | D | E | F
Ich möchte zeigen diese wie folgt:
MyColumn | MyColumn2
A | B
C | D
E | F
Wie Sie sehen, ich die Spalten als Paare mit einem benutzerdefinierten Spaltennamen angezeigt werden sollen. Die Paare sind Spalte A und B, Spalte C und D und Spalte C und D.
Lösung
select A as [Col 1], B as [Col 2] from table
union all
select C,D from table
union all
select E,F from table
Andere Tipps
Wenn ich verstehe Sie richtig Sie können dies tun, mit einer Gewerkschaft:
SELECT A as MyColumn, B as MyColumn2
UNION
SELECT C as MyColumn, D as MyColumn2
UNION
SELECT E as MyColumn, F as MyColumn2
Wenn Sie Ihre Datentypen nicht das gleiche für die passenden Spalten sind dann werden Sie den Datentyp zuerst konvertieren müssen, so etwas wie:
SELECT CONVERT(VARCHAR(10), A) as MyColumn, CONVERT(VARCHAR(10), B) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), C) as MyColumn, CONVERT(VARCHAR(10), D) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), E) as MyColumn, CONVERT(VARCHAR(10), F) as MyColumn2
Dies wird auf eine Milliarde Spalten nicht maßstab aber ...
Select A as MyColumn, B as MyColumn2 from Table
UNION
Select C as MyColumn, D as MyColumn2 from Table
UNION
Select E as MyColumn, F as MyColumn2 from Table
Diese Abfrage wird die Duplikate obwohl entfernen. So sagt, es gibt einen Datensatz in der Tabelle
Hallo | Welt | Hallo | Welt | Hallo | Welt
Meine wählen wird nur zurückkehren
Hallo | Welt
Sambo des kehren alle drei ...
In SQL Server 2005 Unpivot Operator kann Ihr Problem lösen. Unpivot konvertiert Spalten in Zeilen in sQL Server 2005 .
Hoffe, es hilft