2016-10-24 8 views
2

私はこれをしばらく考えようとしています。私は名前の値のペア、型、および日付(簡単にするために含まれていない)を含む複数の行があるテーブルを持っています。彼らはすべてidによって結ばれています。同じidに関連するすべてのデータを、type equalsドキュメントでフィルタされた1行に出力したいと思います。私は出力に探しています何Oracleクエリでは、複数の行(名前と値のペア)のidで1行出力する必要があります

 
    INSERT INTO table1 
    (id, name, val, type) 
    VALUES 
    (111, 'direction', 'inbound', 'document'), 
    (111, 'filename', 'file.txt', 'document'), 
    (111, 'send', 'FOO.SND', 'document'), 
    (111, 'rec', 'FOO.RCV', 'document'), 
    (111, 'unrelated', 'unrelated', 'business'), 
    (222, 'direction', 'inbound2', 'document'), 
    (222, 'filename', 'file2.txt', 'document'), 
    (222, 'send', 'FOO.SND2', 'document'), 
    (222, 'rec', 'FOO.RCV2', 'document'), 
    (222, 'unrelated', 'unrelated2', 'business'), 
    (333, 'direction', 'inbound3', 'document'), 
    (333, 'filename', 'file3.txt', 'document'), 
    (333, 'send', 'FOO.SND3', 'document'), 
    (333, 'rec', 'FOO.RCV3', 'document'), 
    (333, 'unrelated', 'unrelated3', 'business'); 

は次のとおりです。

 
    id direction send  rec  filename 
    111 inbound FOO.SND FOO.RCV file.txt 
    222 inbound2 FOO.SND2 FOO.RCV2 file2.txt 
    333 inbound3 FOO.SND3 FOO.RCV3 file3.txt 

答えて

0

はピボットクエリを試してみてください。

SELECT id, 
     MAX(CASE WHEN name = 'direction' THEN val END) AS direction, 
     MAX(CASE WHEN name = 'send'  THEN val END) AS send, 
     MAX(CASE WHEN name = 'rec'  THEN val END) AS rec, 
     MAX(CASE WHEN name = 'filename' THEN val END) AS filename 
FROM table1 
GROUP BY id 
+0

ありがとうございました!これは正しい方向に私を押し進めました。 – Laurie

+0

申し訳ありませんが、評判が15未満ですので、レコーダーですが公開されていません。それは私がupvotedときに受け取ったメッセージです。 – Laurie

関連する問題