如果是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
- select t.col1,
- t.col2,
- wm_concat(t.col3) col3,
- wm_concat(t.col4) col4,
- wm_concat(t.col5) col5,
- wm_concat(col6) col6
- from t_table t
- group by t.col1, t.col2
wm_concat(t.col3||' ')默认是逗号隔开