2011-12-20 2 views
2

전 환승 (또는 피벗) 승/SQL은 일반적인 질문이지만, 내가 스택/구글에서 뭘하려고하는지 정확히 알 수는 못했습니다.오라클 전치 열 값을 기반으로

간단히 말해서, 열의 가능한 모든 값을 하드 코딩하지 않아도되는 경우를 원합니다.이 값은 시간이 지남에 따라 다양 할 수 있기 때문입니다. 예를 들어,

id col val 
1 a 65 
1 b 34 
1 c 25 
2 a 67 
2 c 22 
... 

목표는하지만 때, 각각 별개의 COL 충분히 COL의 값이 정적 작은 경우

쉬운을위한 열이, 각각의 고유 한 ID에 대한 단일 행과 함께 바람이 case 문에서 가능한 모든 절을 하드 코딩하는 수십 개의 값이 힘들어 보입니다. 사이비 코드

는, 내가하고 싶은

select 
for each attr in (select distinct col from table) 
sum(case when col = attr then val end) as transposed_attr, 
end for 
from table 
group by id 

입니다하지만 난 PL/SQL과 경험, 그래서 내가 오라클이를 달성하는 방법을 모르겠어요.

조언?

답변

0

Oracle 버전은 무엇입니까? http://orafaq.com/wiki/PIVOT

+0

죄송합니다, 9i의를 : 11g는

Infact는, 단지 PIVOT 명령하지를 사용하여 모두 이쪽을 봐 ... 피벗 명령을 소개합니다. 나는 피벗이 없다. –

+0

@justincress - 그런 다음 postesd 링크에 나와 있듯이 CASE/DECODE 버전을 사용 중입니다. 300 행을 300 열로 회전해야한다면 300 CASE/DECODE 문이 필요합니다. 죄송합니다. – MatBailie

관련 문제