求助sql或存储过程写法

Ethan0411 2009-07-27 05:56:22
一个表,有两列(A,B),表中的数据如下如下:
A B
1 a
1 b
2 a
2 c


我想通过sql或存储过程查出的结果如下面的方式:不知道该如何操作?


A B
1 a,b
2 a,c
...全文
88 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-07-27
  • 打赏
  • 举报
回复
这里有个用sys_connect_by_path拼字符的例子。

http://blog.csdn.net/inthirties/archive/2009/07/08/4331685.aspx
csuxp2008 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ethan0411 的回复:]
引用 3 楼 fosjos 的回复:
10g以下只能老老实实用connect by递归


递归怎么做啊?需要写存储过程吗》?
[/Quote]

那你用的是10g以下的版本,可以用8楼的方法
csuxp2008 2009-07-27
  • 打赏
  • 举报
回复
不需要group by
[Quote=引用 4 楼 andyguan01_2 的回复:]
引用 2 楼 csuxp2008 的回复:
引用 1 楼 csuxp2008 的回复:
wmsys.wm_concat 函数


select A,wmsys.wm_concat(B) B from table_name;


貌似少了group by语句,修改如下:

select A,wmsys.wm_concat(B) B from table_name Group By a;
[/Quote]
smallbear923 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 quiettown 的回复:]
select A, substr(max(sys_connect_by_path(B,',')),2) as value
  from (
    select A, B, row_number()over(partition by A order by B) as rn
      from test
      )
  start with rn = 1
connect by rn - 1 = prior rn and A= prior A
  group by A; 
[/Quote]

学习了,曾经也对row_number不是很了解。
quiettown 2009-07-27
  • 打赏
  • 举报
回复
select A, substr(max(sys_connect_by_path(B,',')),2) as value
from (
select A, B, row_number()over(partition by A order by B) as rn
from test
)
start with rn = 1
connect by rn - 1 = prior rn and A= prior A
group by A;
fosjos 2009-07-27
  • 打赏
  • 举报
回复
oracle特有的sql语句

以前写过,逻辑很麻烦,后来不用了,直接写存储过程,楼主搜一下就有了

或者等哪位有空贴一下吧
Ethan0411 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fosjos 的回复:]
10g以下只能老老实实用connect by递归
[/Quote]

递归怎么做啊?需要写存储过程吗》?
Ethan0411 2009-07-27
  • 打赏
  • 举报
回复
我的数据库里没有wmsys.wm_concat这个函数
andyguan01_2 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csuxp2008 的回复:]
引用 1 楼 csuxp2008 的回复:
wmsys.wm_concat 函数


select A,wmsys.wm_concat(B) B from table_name;
[/Quote]

貌似少了group by语句,修改如下:

select A,wmsys.wm_concat(B) B from table_name Group By a;
fosjos 2009-07-27
  • 打赏
  • 举报
回复
10g以下只能老老实实用connect by递归
csuxp2008 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 csuxp2008 的回复:]
wmsys.wm_concat 函数
[/Quote]

select A,wmsys.wm_concat(B) B from table_name;
csuxp2008 2009-07-27
  • 打赏
  • 举报
回复
wmsys.wm_concat 函数

17,377

社区成员

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

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