2011-12-20 6 views
2

転記(またはピボット)w/sqlは一般的な質問ですが、私はスタック/ googleで何をしようとしているのかを正確に知ることができませんでした。oracle転置列の値に基づいて

簡潔に言えば、これらの値は数多くあり、時間の経過とともに変化する可能性があるため、可能なすべての値をハードコーディングする必要はありません。例えば、

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での経験の浅いので、私は、Oracleでこれを達成する方法がわかりません。

アドバイス?

答えて

0

Oracleのバージョンは? http://orafaq.com/wiki/PIVOT

+0

申し訳ありませんが、9iのを:11gは

Infactは、ちょうどPIVOTコマンドではなくを使用して、両方のためにここを見て...ピボットコマンドが導入されました。私はピボットを持っていません。 –

+0

@justincress - postesdのリンクによれば、あなたはCASE/DECODEバージョンにいます。また、300行を300列に変換する必要がある場合は、300個のCASE/DECODE文が必要です。ごめんなさい。 – MatBailie

関連する問題