表内容如下:
井号  汇报日期  工作情况
A     2011-1-1  良好1
A     2011-1-2  良好2
A     2011-1-3  良好3
B     2011-1-4  良好4
B     2011-1-5  良好5
A     2011-1-6  良好6想通过一SQL语句得到如下表
井号 工作情况
A    2011-1-1良好1,2011-1-2良好2,2011-1-3良好3,2011-1-6良好6
B    2911-1-4良好4,2011-1-5良好5最好是一条语句就能查询出来,不需要些额外的自定义函数啥的,因为我没有权利操作别人的数据库,只能查询。

解决方案 »

  1.   

    期待不用存储过程直接用sql的语句,显然要循环吧~
      

  2.   

    嗯,对于数据库方面,我不大懂,呵呵,所以请教各位,楼上的意思,无法通过sql语句直接构造我想要的结果,是吗?
      

  3.   

    我个人觉得够呛啊,要是不知道你的A和B有多少个一个select肯定是解决不了问题,声明一个变量,loop一下,可以连起来吧~
      

  4.   


    --id:井号,rdate:汇报日期,status:工作情况
    select id "井号",wmsys.wm_concat(rdate||status) from tablename "工作情况"
    group by id;
      

  5.   

    行列转换的问题,推荐参考:http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?93286相当好的方法!
      

  6.   

    with t as(
    select 'A' 井号,'2011-1-1' 汇报日期,'良好1' 工作情况 from dual
    union all
    select 'A','2011-1-2','良好2' from dual
    union all
    select 'A','2011-1-3','良好3' from dual
    union all
    select 'B','2011-1-4','良好4' from dual
    union all
    select 'B','2011-1-5','良好5' from dual
    union all
    select 'A','2011-1-6','良好6' from dual
    )select 井号,wm_concat(汇报日期||工作情况) from t group by 井号
    A 2011-1-1良好1,2011-1-2良好2,2011-1-6良好6,2011-1-3良好3
    B 2011-1-4良好4,2011-1-5良好5
      

  7.   


    --wm_concat()字符串连接函数使用:10g,11g
    SQL> with t as(
      2       select 'A' 井号,'2011-1-1' 汇报日期,'良好1' 工作情况 from dual union all
      3       select 'A','2011-1-2','良好2' from dual union all
      4       select 'A','2011-1-3','良好3' from dual union all
      5       select 'B','2011-1-4','良好4' from dual union all
      6       select 'B','2011-1-5','良好5' from dual union all
      7       select 'A','2011-1-6','良好6' from dual)
      8  select 井号,wm_concat(汇报日期||工作情况) 工作情况
      9  from t
     10  group by 井号
     11  /井号 工作情况
    ---- --------------------------------------------------------------------------------
    A    2011-1-1良好1,2011-1-2良好2,2011-1-6良好6,2011-1-3良好3
    B    2011-1-4良好4,2011-1-5良好5
    oracle wmsys.wm_concat函数
      

  8.   

    行列转换函数wm_concat可以做到
      

  9.   

    --如果连接时按汇报日期来的,他那样还不能满足,用下面这个:select 井号, max(工作情况)  as 工作情况 
    from (
          select 井号,
                 wm_concat(汇报日期||工作情况)over(partition by 井号 order by 汇报日期) 工作情况 
          from t 
    )
    group by 井号