ORACLE 10g,如何将不同ID号的数据按ID顺序合并成一行 20
数据举例:表A:codeIDcontext011hh012dd013c,c021ww022e,e023tt查询出的结果应为:codeIDcontext011hhddc,c...
数据举例:
表A:
code ID context
01 1 hh
01 2 dd
01 3 c,c
02 1 ww
02 2 e,e
02 3 tt
查询出的结果应为:
code ID context
01 1 hhddc,c
02 1 wwe,ett
既按code分组,再按ID顺序将context合并为一行,在ORACLE 10g环境,我试了wm_concat函数,select wm_concat(context) from A group by code;发现不能按ID顺序合并,请高手指教! 展开
表A:
code ID context
01 1 hh
01 2 dd
01 3 c,c
02 1 ww
02 2 e,e
02 3 tt
查询出的结果应为:
code ID context
01 1 hhddc,c
02 1 wwe,ett
既按code分组,再按ID顺序将context合并为一行,在ORACLE 10g环境,我试了wm_concat函数,select wm_concat(context) from A group by code;发现不能按ID顺序合并,请高手指教! 展开
4个回答
展开全部
用过程,先取出code集合,逐个处理code,将该code下的context按id顺序合并,写到表里。
另外,输出结果里面的ID没用了吧。
另外,输出结果里面的ID没用了吧。
追问
group by code是可以取出code 集合,但是你说的‘将该code下的context按id顺序合并’这个怎么实现?我就卡在这了。因为像一楼那样select wm_concat(context) from A group by code
order by id;会报错:group by 命令没有正确结束。貌似concat函数没有按顺序合并的功能~~
追答
取出code 集合后,再逐个按code取得这个code下的纪录集合,将这个集合按id排序,用你的wm_concat合并,写到表里,这表里应该只有code和合并后的contex。
我的做法是分成几个步骤,不是一个查询语句就实现。
展开全部
加一个排序字段呢?
select wm_concat(context) from A group by code
order by id;
select wm_concat(context) from A group by code
order by id;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以先排序
SQL> with a as (select 01 code, 2 id, 'hh' context
2 from dual
3 union all
4 select 01 code, 1 id, 'dd' context
5 from dual
6 union all
7 select 01 code, 3 id, 'c,c' context
8 from dual
9 union all
10 select 02 code, 1 id, 'ww' context
11 from dual
12 union all
13 select 02 code, 3 id, 'e,e' context
14 from dual
15 union all
16 select 02 code, 2 id, 'tt' context from dual)
17 select t.code, wm_concat(t.context)
18 from (select a.code code, a.id id, a.context context
19 from a
20 order by a.code, a.id) t
21 group by t.code;
CODE WM_CONCAT(T.CONTEXT)
---------- --------------------------------------------------------------------------------
1 dd,hh,c,c
2 ww,tt,e,e
SQL> with a as (select 01 code, 2 id, 'hh' context
2 from dual
3 union all
4 select 01 code, 1 id, 'dd' context
5 from dual
6 union all
7 select 01 code, 3 id, 'c,c' context
8 from dual
9 union all
10 select 02 code, 1 id, 'ww' context
11 from dual
12 union all
13 select 02 code, 3 id, 'e,e' context
14 from dual
15 union all
16 select 02 code, 2 id, 'tt' context from dual)
17 select t.code, wm_concat(t.context)
18 from (select a.code code, a.id id, a.context context
19 from a
20 order by a.code, a.id) t
21 group by t.code;
CODE WM_CONCAT(T.CONTEXT)
---------- --------------------------------------------------------------------------------
1 dd,hh,c,c
2 ww,tt,e,e
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己编个字符串求和的函数吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询