南大通用GBase 8s数据库Pivot函数解析(下)
--用例3:with as
下面再举一个with as子查询的例子,效果与上述内联视图结果一致。

--用例4:多列转换

上面的例子中 pivot_clause 中定义 2 个聚合,这里得到的转换列是双倍(因为聚合的数量是双倍)。
转换列的数量=聚合列的数量 * pivot_in_clause 中值的个数(2*2=4),
转换列的数量不能超过 1024。
--用例5,多列多值转换

GBase 8s Pivot转换查询注意事项
在 pivot_for_clause 中使用的列(如例子中为 deptno 列)不能出现在SELECT投影列中,在 pivot_for_clause 中的列会根据我们在 pivot_in_clause中提供的值的范围进行分组。下列中试图查询 deptno 列,会引发异常,因为这种情况下,deptno完全从投影中被移除了。

同样也不能查询任何出现在pivot_clause 中的列。比如试图查询 sal1 列,也会引发了同样的异常。
pivot_clause中的列必须使用聚合函数,没有使用聚合函数,也会引发异常。

pivot_in_clause 中,如果指定别名就用别名,如果没有指定就用值当列名;而 pivot_clause中如果指定别名就连接到pivot_in_clause 转换后的相应列的名称的后面,如果没有指定就不用。pivot_clause中有多个聚合函数时,8s允许都不设置别名,8s会自动在后面加上_1,_2..依次类推。别名都不支持加单引号。

通过本文的介绍,您可能已经对GBase 8s中的Pivot功能有了全面的认识。它不仅仅是一个简单的数据转换工具,更是数据分析的利器。下一篇文章,我们会展开介绍Unpivot的使用技巧,感谢您的阅读。

浙公网安备 33010602011771号