3

次のようなJOIN結果があります

Address1 Address2 Address3
ABC       XYZ      LMN

次の形式に変換したい

Address    Level

ABC         1
XYZ         2
LMN         3
4

1 に答える 1

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 |
于 2013-01-11T15:55:27.597 に答える