直接上原数据
现在想按照schoolid分组,把对应的classid整理罗列出来
oracle中内置了一个神奇的函数wm_concat(列名) 这个神奇的函数,可以把列值用“,”分隔开,并且是显示成一行
我们先单独看看这个函数怎么玩的,直接上栗子
发现返回了CLOB这样一个类型的东东,后面研究发现,这个主要是由于oracle版本不一样,导致的
部分版本返回的类型是varchar的,部分版本的类型是CLOB的(具体哪些版本 这个自己实操的时候可以留意一下)
为了使他们兼容,考虑使用to_char这个函数进行转换一下
ok 成功了 他已经把一列的数据以','的形式合并成一个字段值了
那这时候,和我们要的结果就很接近了
再来看看我们的需求,按照schoolid分组进行合并显示
好了 这样我们的效果就可以达到了
现在我们来比较一下wm_concat这个函数和pivot这个函数的区别
wm_concat:
他是把一列的值,通过','进行分隔后,合并成一个值进行显示的
pivot:
他是把一列的值,当成字段值进行显示的