1

私はこのようなテーブルを持っています

col1 | col2
-----------
  1  |  a
  2  |  b
  3  |  c

そして、このように見えるクエリを実行したい

val | colname
-------------
  1 | col1
  2 | col1
  3 | col1
  a | col2
  b | col2
  c | col2

アンピボットについて読み、列名を取得する方法を理解しました。これが私が現在取り組んでいるクエリです。

SELECT 
     * 
FROM 
    myTable 
UNPIVOT (
            val 
        FOR 
            column_name 
        IN (
               SELECT 
                   column_name 
               FROM 
                   USER_TAB_COLUMNS 
               WHERE 
                   table_name = 'myTable'
           )
        )
4

1 に答える 1

2

何かが欠けていない限り、これを使用できないのはなぜですか。では、すべてのUNPIVOTデータが同じ型である必要があるため、必要に応じてデータをキャストする必要があります。

select value, colName
from
(
  select to_char(col1) col1,
    col2
  from yourtable
) 
unpivot
(
  value
  for colName in (col1, col2)
) 
order by value

デモで SQL Fiddle を参照してください

結果:

| VALUE | COLNAME |
-------------------
|     1 |    COL1 |
|     2 |    COL1 |
|     3 |    COL1 |
|     a |    COL2 |
|     b |    COL2 |
|     c |    COL2 |
于 2012-12-11T19:14:28.450 に答える