查询求解,在线等,求高手

fdhsfdsjh 2011-12-12 11:20:21
表A
字段:
PKID
name
==================
表B
字段:
PKID
pk_a(表A外键)
msg
===================
A 与 B 是1对多

例如:A表有数据

1 qqq
2 BBB

B表有数据
213213213213 1 测试1
234567890767 1 测试2
456789044444 2 测试3
777732132132 2 测试4

现在要呈现的结果为:
qqq 测试1,测试2
BBB 测试3,测试4
...全文
74 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
梁图真 2011-12-12
  • 打赏
  • 举报
回复
select a,max(substr(sys_connect_by_path(b,','),2)) from (
select a,b,row_number() over(partition by a order by b) rn from (select a.name a,b.name b,rownum rn from a,b where a.pkid=b.pkid1)
start with rn=1
connect by rn=rownum
)
start with rn=1
connect by rn-1=prior rn
group by a

写的有点问题,但是要求应该满足了
yixilan 2011-12-12
  • 打赏
  • 举报
回复
用wm_concat即可。
fdhsfdsjh 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xunmengzhi 的回复:]

SQL code

select A.NAME, wmsys.wm_concat(B.MSG) MSG
from A,B
WHERE
A.PKID=B.PK_A
[/Quote]
报错了
>[错误] 脚本行:1-4 ---------------------------------------
ORA-00937: 不是单组分组函数
Script line 1, statement line 1, column 7

[执行:11-12-12 上午11时34分44秒][执行:0/ms]
xunmengzhi 2011-12-12
  • 打赏
  • 举报
回复
后面还需要一点

group by A.NAME
xunmengzhi 2011-12-12
  • 打赏
  • 举报
回复

select A.NAME, wmsys.wm_concat(B.MSG) MSG
from A,B
WHERE
A.PKID=B.PK_A

17,377

社区成员

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

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