oracle中返回多行的同一字段,并拼装成一行

有一张表T,字段如下tel,code查询最多返回4行,现在要把返回每一行的这两个字段拼装成一行,该怎么做呢据说可以用游标循环来做,我想要得到的结果是用拼装出来的这一行来执... 有一张表T,字段如下
tel,code
查询最多返回4行,
现在要把返回每一行的这两个字段拼装成一行,该怎么做呢
据说可以用游标循环来做,
我想要得到的结果是用拼装出来的这一行来执行另一个表的更新操作
可能是我表达没清楚哈,是这样的有两个表,T1和T2
T1字段:tel1,code1,tel2,code2,tel3,code3
T2字段:tel,code
现在要把T2查出来的记录(不会超过3条)更新给T1
比如有两条记录,那第一条的tel,code分别赋值给tel1,code1,第2条的赋值给tel2,code2
展开
 我来答
9iTreeNewBee
2015-03-31 · TA获得超过505个赞
知道小有建树答主
回答量:1800
采纳率:55%
帮助的人:422万
展开全部
看个例子
SQL> select * from test;

ID SE NAME
---------- -- ----------
1 clark
2 johns
3 james

SQL> create table test1(id int,name varchar2(10));

表已创建。

SQL> insert into test1 values(1,'');

已创建 1 行。

SQL> insert into test1 values(2,'');

已创建 1 行。

SQL> insert into test1 values(3,'');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from test1;

ID NAME
---------- ----------
1
2
3

QL> update test1 a set name=(select id||name as name from test b where a.id=b.id);

已更新3行。

SQL> commit;

提交完成。

SQL> select * from test;

ID SE NAME
---------- -- ----------
1 clark
2 johns
3 james

SQL> select * from test1;

ID NAME
---------- ----------
1 1clark
2 2johns
3 3james
追问
可能是我表达没清楚哈,是这样的有两个表,T1和T2
T1字段:tel1,code1,tel2,code2,tel3,code3
T2字段:tel,code
现在要把T2查出来的记录(不会超过3条)更新给T1
比如有两条记录,那第一条的tel,code分别赋值给tel1,code1,第2条的赋值给tel2,code2
追答
这个暂时 没想到什么好的办法 按你说的不会超过3条记录的话 可以用最笨的方法 substr+instr
看例子

SQL> select * from test1;

ID NAME
---------- ----------
1 clark
2 johns
3 james

SQL> select wm_concat(id||','||name) achar from test1
2 ;

ACHAR
--------------------------------------------------------------------------------
1,clark,2,johns,3,james

SQL> insert into testt select substr(achar,1,instr(achar,',',1)-1) as id1,substr(achar,instr(achar,',',1,1)+1,instr(achar,',',1,2)-instr(achar,',',1,1)-1) name1,substr(achar,instr(achar,',',1,2)+1,1) id2,substr(achar,instr(achar,',',1,3)+1,instr(achar,',',1,4)-instr(achar,',',1,3)-1) name2,substr(achar,instr(achar,',',1,4)+1,1) id3,substr(achar,instr(achar,',',1,5)+1) name3 from (select wm_concat(id||','||name) achar from test1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from testt;

ID1 NAME1 ID2 NAME2 ID3 NAME3
---------- ---------- ---------- ---------- ---------- ----------
1 clark 2 johns 3 james
micro0369
2015-03-31 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4037万
展开全部
用wm_concat

select wm_concat(tel),wm_concat(code) from T;
更多追问追答
追问

执行出来的效果是这样的,我想要的是四列哈

追答
不好意思,没有看懂你的需求。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式