wmsys.wm_concat是一个聚合函数,其作用是将一列数据转换成一行,也就是我们常用的行专列,但是该函数是一个undocument函数,所以不推荐大家使用这个函数。因为在后续的版本中还提不提供这个函数都不好说呢。
首先创建临时表和测试数据
使用该函数,可以看到我们的按id做group by,把name字段列转置为一行
但是我们使用wmconcat还是会遇到这么两个问题:1.vm_concat函数是无序的。2.遇到ora-22922的错误。
通过我们第二步可以看到name字段在列转行后没有按照顺序排列的
这种情况我们可以使用窗口函数来解决无序的问题呢,如下图所示
另一种情况是会遇到ora-22922的报错,如下图所示。这种情况一般发生在内层使用to_char这样的函数,外层在去查询这列就报错。
解决方案是将to_char这类的函数放到最外面执行。