oracle查询多行数据合并成一行数据

如果是oracle 10g以上 一个wm_concat函数就可以解决

但是需要注意:wmsys.wm_concat 两个都要注意返回的长度不能超过4000,不过11GR2版本之后 wmsys.wm_concat返回的是clob类型

所以mybatis查询时需要已clob方式处理。resultType不能使用MAP了,clob转不了Map里面,需要用resultMap

  <resultMap id="ResultMapExtendBLOBs" type="com.ProjectTest" >
    <result column="HTML_INFO" property="HTML_INFO" jdbcType="CLOB" />

<result column="IMAGE_INFO" property="IMAGE_INFO" jdbcType="BLOB" />

</resultMap>

ProjectTest.java:

private String HTML_INFO;

private byte[] IMAGE_INFO;


t_table:col1,col2,col3,col4,col5,col6 
其中col1和col2是每条记录都有值的, 
col1    col2     col3    col4    col5     col6 
jack    杰克      a       a1                   c1 
jack    杰克      a                  b2 
jack    杰克      b      a3        b3       c3 
mary    玛丽     c      a4                   c4 
mary    玛丽     d     a5        b5 
mary    玛丽     c      a6       b6       c6 
  

我想根据col1和col2的唯一决定,来把jack  杰克合成一条记录,mary 玛丽合成一条记录,即: 

col1    col2     col3       col4               col5       col6 
jack    杰克    a,a,b      a1,a3           b2,b3      c1,c3 
mary    玛丽    c,d,c      a4,a5,a6      b5,b6      c4,c6       


  1. select t.col1,  
  2.        t.col2,  
  3.        wm_concat(t.col3) col3,  
  4.        wm_concat(t.col4) col4,  
  5.        wm_concat(t.col5) col5,  
  6.        wm_concat(col6) col6  
  7.   from t_table t  
  8.  group by t.col1, t.col2  

wm_concat(t.col3||' ')默认是逗号隔开


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值