これはおそらく、あなたが選んだプログラミング言語のクライアント側でうまくいっているでしょう。
セクション名を事前に知っていなければ、列名に変換する必要はありません。
(new PIVOT operatorを使用)は、Oracle 11gの更新答え:
WITH
SELECT section_name, section_value FROM tbl_sections
AS
data
SELECT
one.section_value 'sectionI',
two.section_value 'sectionII',
three.section_value 'sectionIII'
FROM
select selection_value from data where section_name = 'sectionI' one
CROSS JOIN
select selection_value from data where section_name = 'sectionII' two
CROSS JOIN
select selection_value from data where section_name = 'sectionIII' three
かも使用します。古いバージョンの
SELECT * FROM
(SELECT section_name, section_value FROM tbl_sections)
PIVOT
MAX(section_value)
FOR (section_name) IN ('sectionI', 'sectionII', 'sectionIII')
、あなたには、いくつかの自己結合を行うことができますMAXトリックと「集約」:
SELECT
MAX(DECODE(section_name, 'sectionI', section_value, '')) 'sectionI',
MAX(DECODE(section_name, 'sectionII', section_value, '')) 'sectionII',
MAX(DECODE(section_name, 'sectionIII', section_value, '')) 'sectionIII'
FROM tbl_sections
Oracleのバージョンは? –
section_nameがsectionIで、値が異なる複数の行がある場合はどうなりますか?別の行を表示していますか?もしそうなら、セクションIIとセクションIIIの下に何を表示すべきですか?各セクション名に一致しない数のエントリがある場合、空の列はどこに行きますか?一般的な意味で、あなたがしようとしていることはそれほど明確に定義されていません。 – gfortune