请教一条sql语句

jbas 2010-12-29 03:16:34
大家好,
我有一下表mytab
id code name
1 a 张三
2 a 李四
3 c 王五


我想用一个函数或一条sql语句,来取出这样的数据:

取出code='a'的数据,组成一个字符串。

取出结果如:“张三、李四”

我不想用游标来做,谢谢!

...全文
65 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbas 2010-12-29
  • 打赏
  • 举报
回复
非常感谢,学了个有用的函数。
Oraclefans_ 2010-12-29
  • 打赏
  • 举报
回复

--------9i
SQL> with tab as
2 (
3 select 1 id ,'a' code, '张三' name from dual union all
4 select 2 id ,'a' code, '李四' name from dual union all
5 select 3 id ,'c' code, '王五' name from dual
6 )
7 SELECT MAX(substr(sys_connect_by_path(t.name, '、'), 2)) str
8 FROM (SELECT code,
9 name,
10 row_number() over(PARTITION BY code ORDER BY name) rn
11 FROM tab
12 where code = 'a') t
13 START WITH rn = 1
14 CONNECT BY rn = PRIOR rn + 1
15 AND code = PRIOR code
16 ;

STR
--------------------------------------------------------------------------------
张三、李四
----10g
SQL>
SQL> with tab as
2 (
3 select 1 id ,'a' code, '张三' name from dual union all
4 select 2 id ,'a' code, '李四' name from dual union all
5 select 3 id ,'c' code, '王五' name from dual
6 )
7 select replace(wm_concat(name),',','、') from tab where code = 'a'
8 ;

REPLACE(WM_CONCAT(NAME),',','?
--------------------------------------------------------------------------------
张三、李四

SQL>
X_MSDN 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhuomingwang 的回复:]
引用 2 楼 zhuomingwang 的回复:
SQL code

select replace(wm_concat(name),'、')
from mytab
where code='a'


SQL code
--成哥写漏了
select replace(wm_concat(name),',','、')
from mytab
where code='a'
[/Quote]

差不多就是这样子
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuomingwang 的回复:]
SQL code

select replace(wm_concat(name),'、')
from mytab
where code='a'
[/Quote]
--成哥写漏了
select replace(wm_concat(name),',','、')
from mytab
where code='a'
  • 打赏
  • 举报
回复

select replace(wm_concat(name),'、')
from mytab
where code='a'
心中的彩虹 2010-12-29
  • 打赏
  • 举报
回复
select replace(wm_concat(name),'、') from mytab group by code

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧