日期:2014-05-17  浏览次数:20821 次

*****sql中根据某字段将另一字段相连***菜鸟求助*****
现在有一张数据表:Table1
FcaID  FSec  FName
001     1    卡片1
001     2    卡片2
002     1    卡片3
002     2    卡片4
002     3    卡片5

说明:同一个FcaID可能对应着N条记录(1=<N<=10)

如果不通过写存储过程或函数,只用sql,能否实现以下取数:
FcaID     FName
001    卡片1卡片2    
002    卡片3卡片4卡片5

在线等,多谢~~~~~~
sql

------解决方案--------------------
引用:
Quote: 引用:

现在有一张数据表:Table1
FcaID  FSec  FName
001     1    卡片1
001     2    卡片2
002     1    卡片3
002     2    卡片4
002     3    卡片5

说明:同一个FcaID可能对应着N条记录(1=<N<=10)

如果不通过写存储过程或函数,只用sql,能否实现以下取数:
FcaID     FName
001    卡片1卡片2    
002    卡片3卡片4卡片5

在线等,多谢~~~~~~




select a.FcaID,concat(a.FName,b.FName) from Table1 a, Table1 b group by a.FcaID;


这个有点问题,不对

------解决方案--------------------
with table1 as 
(
select 001 FcaID,'卡片1' FName from dual union all
select 001 FcaID,'卡片2' FName from dual union all
select 002 FcaID,'卡片3' FName from dual union all
select 002 FcaID,'卡片4' FName from dual union all
select 002 FcaID,'卡片4' FName from dual 
)
select FcaID,listagg(FName, '') within group(order by rownum),replace(to_char(wm_concat(FName)),',','')   from table1 group by FcaID


两种方法
 一种wm_concat 这种文档不推荐 12c已经去掉
 一种 listagg  推荐方法,可排序,可改变连接符

------解决方案--------------------
quote=引用:]
引用:
Quote: 引用:

大神们,帮帮忙啊

1#不行?


哥们,我按照这个改成我的表名和字