入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2016-01-06 投稿人: 浏览次数:9792

如果是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||" ")默认是逗号隔开


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。