次のようなJOIN結果があります
Address1 Address2 Address3
ABC XYZ LMN
次の形式に変換したい
Address Level
ABC 1
XYZ 2
LMN 3
UNPIVOT
またはする必要がありますUNION ALL
。これらは列を取得して行に変換します。AUNION ALL
はすべての RDBMS で実行できます。
select address1 Address, 1 as level
from yourtable
union all
select address2 Address, 2 as level
from yourtable
union all
select address3 Address, 3 as level
from yourtable
デモで SQL Fiddle を参照してください
関数 (SQL Server 2005+/Oracle 11g+)で RDBMS を使用している場合UNPIVOT
、クエリは次のようになります。
select Address,
right(Level, 1) Level
from yourtable
unpivot
(
address
for level in (Address1, Address2, Address3)
) unpiv
デモで SQL Fiddle を参照してください
両方の結果は次のとおりです。
| ADDRESS | LEVEL |
-------------------
| ABC | 1 |
| XYZ | 2 |
| LMN | 3 |