1

私はこのようなテーブルを持っています

StudentNr    Module    MarkAchieved
123          Task1     59
123          Task2     49
123          Exam1     62
854          Task1     71
854          Task2     72
854          Exam1     90
785          Task1     41
785          Task2     53
785          Exam1     60

こんな風に表示されたい

StudentNr    Task1     Task2     Exam1
123          59        49        62
854          71        72        90
785          41        53        60

私の問題は、モジュールがいくつあるかわからないことです

方法を知っていて、ピボットが機能するようになりましたが、動的列では機能しません。動的列を使用してテーブルをピボットするにはどうすればよいですか?

4

1 に答える 1

-1

クエリは次のようになります。

select *
from
(
  select * from t
)
pivot (max(MarkAchieved) for (Module) in ('Task1' as task1, 'Task2' as task2, 'Exam1' as exam1))
;

これは与える:

STUDENTNR   TASK1   TASK2   EXAM1
123         59      49      62
785         41      53      60
854         71      72      90

さて、PIVOTOracle 11g の句の問題は、可能なすべての値を明示的に列挙する必要があることです...これは、PIVOT XMLたとえば句にはない制限です (ただし、XML を生成します... ええ、人生は時々悪い)。

于 2014-05-30T08:15:03.883 に答える