2013-09-28 2 views
1

사용자가 자신의 필드를 만들 수있는 시스템으로 작업하고 있습니다. 이것은 Oracle에서 필드 테이블로 구현 된 다음 필드/값 테이블로 구현됩니다. 나는이 같은 쿼리를 실행하는 경우 : 대신을 반환필드 이름/값 행을 단일 행으로 바꾸는 쿼리

id  field_name field_value 
8  foo   1 
8  bar   5 
8  buzz   4 
... and so on for each id 

이 어떻게 쿼리를 작성할 수 있습니다 :

SELECT 
    field_name, field_value 
FROM field_t 
INNER JOIN field_t ON field_t.id = field_string_t.field_id 
WHERE (field_name = 'foo' 
    OR field_name = 'bar' 
    OR field_name = 'buzz' 
) 

는 그때 일련의 행에 필드 이름/값 쌍을 얻을 수 있습니다

id  foo  bar  buzz 
8  1  5  4 

?

감사합니다. 마크 베니 스터에 의해 제안이에 XML에있을 것입니다 결과를 참고 (FIELD_NAME 사용 PIVOT의 XML 값 대신 하위 쿼리를 사용하려면

+3

을 확인하시기 바랍니다. http://stackoverflow.com/questions/17116354/oracle-pivot-converting-values-into-columns –

답변

1

당신은 같은

을 수행 할 PIVOT 기능을 사용할 수 있습니다 예를 들어, 참조 - 자세한 내용은 경우)

는 아래의 링크 이것은 * 회전 *라고

PIVOT and UNPIVOT operators in Oracle 11g

select * from 
(
SELECT id, field_name, field_value,field_id 
FROM field_t) 
PIVOT (
MAX(field_value) 
FOR (field_name) IN ('foo' as foo, 'bar' AS bar, 'buzz' as buzz)) 
WHERE id=field_id; 
관련 문제