【发布时间】:2017-06-22 04:10:13
【问题描述】:
我不知道如何在 Oracle 11g 中将列值动态转换为行,请帮助解决这个问题。
我在屏幕截图中附加了输入值和预期输出值。
这里 rollno 是每一行的唯一值,基于 rollno,可以将不同的标记填充到列中[它可能是动态的或最多 5 列,如图所示],同样需要填充不同的类值 [可以动态填充或最多填充 5 列]
【问题讨论】:
-
很遗憾,这不能完全按原样解决。你没有足够清楚地指定你的约束。具体来说,在 rollno 101 下,是什么让标记 101 和标记 1 成为 104?为什么那里没有marks2?它们必须位于不同的列中,还是只需位于按 rollno 分组的单行上?
-
我想我知道你真正想要的是什么。看我的回答。如果我关闭,我会相应地调整它。
-
嗨 Sandiper,我已经更新了需求中的约束,请帮助解决这个问题
-
我仍然会引导您找到我的答案。问题是marks1、marks2等没有任何意义。您刚刚将它们排成一排。没有什么是独一无二的,这意味着在第二行中,marks2 将始终为 104。如果您有其他值,则 104 将向右移动。这使得 PIVOT 成为一个糟糕的应用程序。
-
你应该回答的更深层次的问题是为什么你需要在不同的列中使用这些?
标签: sql oracle oracle11g pivot-table