2016-10-24 3 views
2

나는 이것을 잠시 알아 내려고 노력했습니다. 이름 값 쌍, 유형 및 날짜 (단순화를 위해 포함되지 않음)가 포함 된 여러 행이있는 테이블이 있습니다. 그들은 모두 이드에 의해 묶여있다. 동일한 ID에 관련된 모든 데이터를 형식이 같음 문서로 필터링 된 한 행에 출력하고 싶습니다.오라클 쿼리, 여러 행 (이름/값 쌍)에 대한 id로 하나의 행 출력이 필요합니다.

 
    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 이하이기 때문에 레코더이지만 공개적으로 표시되지 않습니다. 그것이 내가 상향 투표했을 때받은 메시지입니다. – Laurie