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 回答