关于wm_concat(把一列的值,通过','进行分隔后,合并成一个值进行显示)

直接上原数据

 

 

现在想按照schoolid分组,把对应的classid整理罗列出来

oracle中内置了一个神奇的函数wm_concat(列名) 这个神奇的函数,可以把列值用“,”分隔开,并且是显示成一行

 我们先单独看看这个函数怎么玩的,直接上栗子

 

 发现返回了CLOB这样一个类型的东东,后面研究发现,这个主要是由于oracle版本不一样,导致的

部分版本返回的类型是varchar的,部分版本的类型是CLOB的(具体哪些版本  这个自己实操的时候可以留意一下)

为了使他们兼容,考虑使用to_char这个函数进行转换一下

 

 ok 成功了  他已经把一列的数据以','的形式合并成一个字段值了

那这时候,和我们要的结果就很接近了

再来看看我们的需求,按照schoolid分组进行合并显示

 

 好了  这样我们的效果就可以达到了

 

现在我们来比较一下wm_concat这个函数和pivot这个函数的区别

wm_concat:

他是把一列的值,通过','进行分隔后,合并成一个值进行显示的

pivot:

他是把一列的值,当成字段值进行显示的

 

posted on 2020-03-17 11:12  追风筝的骚年  阅读(634)  评论(0编辑  收藏  举报

导航