在论坛上看到这么一个问题。。
5,表B  
C1 c2  
2005-01-01 1  
2005-01-01 3  
2005-01-02 5  要求的处数据  
2005-01-01 4  
2005-01-02 5  
合计 9  
试用一个Sql语句完成。这个可以用 group by sum 实现
那我想稍微改下,具体如下:5,表B  
C1 c2  
2005-01-01 1  
2005-01-01 3  
2005-01-02 5  要求的处数据  
2005-01-01 1-3  
2005-01-02 5  我的表B数据不止这些,而且数据量也可能会上万。有可能是 
C1 c2  
2005-01-01 1  
2005-01-01 3 
2005-01-01 4  
2005-01-02 5  
2005-01-02 6那么我要的结果是2005-01-01 1-3-4  
2005-01-02 5-6请问一下。这种情况有没有可能一个SQL语句就能够完成? 
  解决了觉得分数少了可以在加!我论坛分挺多的。呵呵。

解决方案 »

  1.   


     with tb as(
     select '2005-01-01' C1,1 c2 from dual union all
     select '2005-01-01', 3 from dual union all
     select '2005-01-01', 4 from dual union all
     select '2005-01-02', 5 from dual union all
     select '2005-01-02', 6 from dual)
     --以上为提供数据的语句
     select c1,replace(wm_concat(c2),',','-') col2
     from tb
     group by c1
    C1         COL2
    ---------- --------------------
    2005-01-01 1-3-4
    2005-01-02 5-6
      

  2.   

    学习哈10g的函数wm_concat()此问题就简单多了,当然方法很多的,sys_connect_by_path()或者自定义一个函数,都行
      

  3.   


    运用的太灵活了,我当时想到了那个连接函数。但是我没想到用REPLACE 这样处理。因为我要的结果还要做不少处理的。。准备结贴了。。谢谢各位。