select * from ( select t2.rgstrid, t5.possessor,t5.ownernum,t2.rgstrnum,
t1.roomlabel from re_room t1 
left join re_register t2 on t1.rgstrid = t2.rgstrid  
left join re_ownrshpdtl t3 on t1.roomid = t3.roomid 
left join re_ownership t4  on t3.ownrshpid = t4.ownrshpid 
left join re_possessor t5 on t5.ownrshpid =  t4.ownrshpid 
where 1=1  and t2.rgstrnum like '%000%' order by t1.roomid asc ) where rownum <= 5;上面的SQL查询结果如下:
96626   杨开龙                   03342             0000025              001
155907  固原兴远商贸有限公司         0012950           0000165              34
155907  123                            4258697           0000165              34
155907  洒脱                               8524963584        0000165              34现在需求如下,用SQL语句怎么实现? 该SQL语句要求Oracle和MSSQL都适用。
96626    杨开龙                   03342                          0000025              001
155907   固原兴远商贸有限公司、123、洒脱 0012950、4258697、8524963584          0000165              34

解决方案 »

  1.   

    据我所知,字符串分组求和的;Oracle和MSSQL没有通用的;
    oracle可以wmsys.wm_concat()函数完成
    而mssql一般自己写一个函数完成
      

  2.   

    不好通用,这些问题都是通过各种框架提供的功能,如SQL放在个XML文件中,具体DAO中java代码直到运行时才会知道到底是什么SQL语句,这样可以很好的来切换SQL语句,数据库的连接也是如此
      

  3.   

    楼主的需求用sql实现的话,不可能oracle和mssql通用,还是分别写吧
      

  4.   

    分别定义两个函数吧,最后名称一样,客户端的SQL就可以相同了