2017-09-12 16 views
0

Oracle SQLでテーブルを転置または回転する方法を探しています。この場合、SELECTには行が1つだけありますが、複数の列があります。Oracle SQL:1行と複数の列を持つテーブル結果の転置/回転

例:

SELECT 
    id AS "Id", 
    name AS "Name", 
    some_value AS "Favorite color" 
FROM 
    table 
WHERE 
    id = 5; 

結果:私が見たいのは何

id | name | some_value 
--- ------ ----------- 
5 John Orange 

は次のとおりです。

Id    | 5 
Name   | John 
Favorite color | Orange 

私はPIVOTを認識してんだけど、私が苦労していますこの場合の簡単なコードを見てください。

答えて

1

あなたは次のように、この結果を得るために列をアンピボットすることができます

select fld, val 
from (
    select to_char(id) as "Id", -- convert all columns to same type 
      name as "Name", 
      some_value as "Favorite color" 
     from your_table 
    where id = 5 
    ) unpivot(val for fld in("Id", "Name", "Favorite color")); 
+0

素晴らしいです!これが私が望んで探していたものです。本当にありがとう! –

0

使用シンプルUNION ALL

SELECT 'Id' As field_name, cast(id as varchar2(100)) as Value FROM "TABLE" where id = 5 
UNION ALL 
SELECT 'Name' , name FROM "TABLE" where id = 5 
UNION ALL 
SELECT 'Favorite color' , some_value FROM "TABLE" where id = 5; 
0

フランクOckenfussは私が探していた答えを与えました。ありがとう、フランク!

ただし、軽微な変更は、もう少し簡単に列名を変更します:

SELECT * FROM (
    SELECT 
    TO_CHAR(id) AS id, 
    TO_CHAR(name) AS name, 
    TO_CHAR(some_value) AS fav_color 
    FROM my_table 
    WHERE id = 5 
) UNPIVOT(value FOR key IN(
    id AS 'Id', 
    name AS 'Name', 
    fav_color AS 'Favorite color' 
)); 

結果:

key   | value 
-------------- ------ 
Id    5 
Name   John 
Favorite color Orange 
関連する問題