大哥是这样的我的SQL(真实的):      select      b.CustomerOrderNo CustomerOrderNo
      from        ORDER_MAPPING a
                  left join CUSTOMER_ORDER b
                       on a.CustomerOrderID = b.CustomerOrderID
      where      CMTOrderNo ='JCHI-1000'它显示的值为:
                  CustomerOrderNo
                     nnnnn
                     bbbbb
                      .....
                      .....
它的行数是不定的.我要如何用一条SQL把它变成:             nnnnn,bbbbb,....,....
请大侠指教!请大侠根据实际的表来写:
    select      b.CustomerOrderNo CustomerOrderNo
      from        ORDER_MAPPING a
                  left join CUSTOMER_ORDER b
                       on a.CustomerOrderID = b.CustomerOrderID
      where      CMTOrderNo ='JCHI-1000'在线等谢谢!!
                 
                   

解决方案 »

  1.   

    oracle版本?是否支持sys_connect_by_path
      

  2.   

    我用的是oralce 9   
    大哥~~
      

  3.   

    为什么一定要用一句sql呢?用过程可以实现,以前也有同样的例子,你搜下吧
      

  4.   

    是这样的因为我的这个结果要用来打印的!我的打印的东东是:Jasper,它要求要这样
      

  5.   

    SQL> select * from a;FIELD1
    --------------------
    nnnnn
    bbbbb
    ccccc
    aaaaa
    ggggg
    SQL> select substr(max(sys_connect_by_path(field1, ',')), 2) from (
      2  select field1, t1, lead(t1) over(order by t1) t2 from (
      3  select a.field1, row_number() over(order by field1) t1 from a))
      4  start with t2 is null
      5  connect by prior t1=t2;SUBSTR(MAX(SYS_CONNECT_BY_PATH(FIELD1,',')),2)
    -------------------------------------------------------------------------
    nnnnn,ggggg,ccccc,bbbbb,aaaaa
      

  6.   

    吧 A 表替换成  
    select b.CustomerOrderNo CustomerOrderNo
    from ORDER_MAPPING a
    left join CUSTOMER_ORDER b
    on a.CustomerOrderID = b.CustomerOrderID
    where CMTOrderNo ='JCHI-1000'把 field1 替换成  CustomerOrderNo 就可以了或
    SQL> select substr(max(sys_connect_by_path(field1, ',')), 2) from (
    2 select field1, t1, lead(t1) over(order by t1) t2 from (
    3 select a.field1, row_number() over(order by field1) t1 from (
    select b.CustomerOrderNo field1
    from ORDER_MAPPING a
    left join CUSTOMER_ORDER b
    on a.CustomerOrderID = b.CustomerOrderID
    where CMTOrderNo ='JCHI-1000')))
    4 start with t2 is null
    5 connect by prior t1=t2;
      

  7.   

    select * from test_1;A
    --------------------
    1
    2
    3
     select substr(max(sys_connect_by_path(a,',')),2) result
     from (select a,rownum rn from test_1)
     start with rn = 1
     connect by rn = prior rn+1;
      

  8.   

    谢谢大家,请等待,本人测试ing.......