--------------------------------------------------------
ID userId userName type objID content
581 3 小魏子 10 1001 A
502 2 TOMCAT 10 1001 A
502 2 TOMCAT 11 2000 联系
581 3 小魏子 11 2000 联系
581 3 小魏子 11 1999 基本
581 3 小魏子 10 1002 X
502 2 TOMCAT 10 1002 X
501 1 我是大傻          10 1001 A
501 1 我是大傻          10 1002 X
.......请问如何通过SQL 语句 将userId相同,并且type相同的记录合并如下:
-------------------------------------------------------------------
ID userId userName type objID content 
581 3 小魏子 10 1001,1002 A,X
502 2 TOMCAT 10 1001,1002 A,X
502 2 TOMCAT 11 2000 联系
581 3 小魏子 11 2000,1999 联系,基本
501 1 我是大傻          10 1001,1002 A,X
........

解决方案 »

  1.   

    10g用wmsys.wm_concat,9i用sys_connect_by_path.参考这个键接:6楼和10楼的
    http://topic.csdn.net/u/20081110/11/7e74b1ef-efa0-4327-b756-1691c2c13f81.html?seed=1426865206
      

  2.   

    10g 用wmsys.wm_concat根据你的数据,大概是这样:
    select id, userid, userName, type, wmsys.wm_concat(obbId), wmsys.wm_concat(content)
      from t
     group by id, userid, userName, type
      

  3.   


    content是汉字,以上执行后,汉字乱码了啊
      

  4.   

    汉字也一样用的,可能是你的字符集问题看一下你的注册表里的nls_lang是怎么设置的(这个是在客户端的 )--查看数据库的字符集
    select VALUE from nls_database_parameters where parameter like '%NLS_CHARAC%'这2个要一致才行
      

  5.   

    ORACLE PLSQL :select VALUE from nls_database_parameters where parameter like '%NLS_CHARAC%' 
    结果:ZHS16GBK
    注册表:
    数值名称:NLS_LANG
    数值数据:SIMPLIFIED CHINESE_CHINA.ZHS16GBK我的为什么乱码啊?
      

  6.   

    乱码是什么样子的?把sql, 执行结果帖出来看看,我以前也用过这个函数,没遇到过乱码
      

  7.   

    1 741 501 6 0 bf/Y'P籪鬳癗唕禶
    2 743,723 501 10 222,111 N,O`
    3 729 501 12 1001 bf/Y'P籖^鶱?
    16 738 581 22 1001
      

  8.   

    如果content内容不是汉字,是字母的话,那么就是空白的,也不显示乱码。
      

  9.   

    刚才试了一下,是你的字段问题。你的字段是nvarchar2的,这个函数不支持建议改成varchar2的
      

  10.   

    我在hibernate中使用
    sql="select fromUserId,wmsys.wm_concat(fromUserName) as fname,type from ObjectTable where to_char(createTime,'yyyy-MM-dd')='2008-12-02' group by  fromUserId,type";Query query = s.createQuery(sql);为什么报告报告错误呢
    Exception in thread "main" java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode 
     +-[METHOD_CALL] MethodNode: '('
     |  +-[METHOD_NAME] IdentNode: 'wmsys.wm_concat' {originalText=wmsys.wm_concat}
     |  \-[EXPR_LIST] SqlNode: 'exprList'
     |     \-[DOT] DotNode: 'notify0_.from_User_Name' {propertyName=fromUserName,dereferenceType=4,propertyPath=fromUserName,path={synthetic-alias}.fromUserName,tableAlias=notify0_,className=com.cczoo.app.letter.domain.Notify,classAlias=null}
     |        +-[IDENT] IdentNode: '{synthetic-alias}' {originalText={synthetic-alias}}
     |        \-[IDENT] IdentNode: 'fromUserName' {originalText=fromUserName} at org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:145)