私のテーブルには次の列があります。
A | B | C | D | E | F
これを次のように表示したい:
MyColumn | MyColumn2
A | B
C | D
E | F
ご覧のとおり、列をカスタム列名のペアとして表示したいと考えています。ペアは、列 A と B、列 C と D、列 C と D です。
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
これは10億列にはなりませんが...
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
ただし、このクエリは重複を削除します。テーブルに 1 つのレコードがあるとします。
こんにちは | 世界 | 世界 こんにちは | 世界 | 世界 こんにちは | 世界
私の選択は返されるだけです
こんにちは | 世界
サンボは3つすべてを返します...
私があなたを正しく理解しているなら、ユニオンでこれを行うことができます:
SELECT A as MyColumn, B as MyColumn2
UNION
SELECT C as MyColumn, D as MyColumn2
UNION
SELECT E as MyColumn, F as MyColumn2
一致する列のデータ型が同じでない場合は、最初にデータ型を変換する必要があるため、次のようになります。
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
Sql Server 2005 では Unpivot オペレーターが問題を解決できます。 Unpivot は、SQL Server 2005 で列を行に変換します。
それが役に立てば幸い