oracle行列问题求助

Mark_MaoHUA 2010-10-11 09:57:21
统计前数据为:
A,B
1,1
1,2
1,3
2,1
2,2
3,3
4,4
求一Oracle 语法统计后为:
A,B
1,123
2,12
3,34
...全文
81 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
minitoy 2010-10-12
  • 打赏
  • 举报
回复
如下:
SQL> select deptno,wm_concat(empno) from emp group by deptno;

DEPTNO WM_CONCAT(EMPNO)
------ --------------------------------------------------------------------------------
10 7782,7839,7934
20 7369,7902,7876,7788,7566
30 7499,7698,7654,7844,7900,7521

SQL>
SQL> select deptno, empno
2 from (select deptno,
3 wm_concat(empno) over(partition by deptno order by empno) empno,
4 row_number() over(partition by deptno order by empno desc) rn
5 from emp)
6 where rn = 1;

DEPTNO EMPNO
------ --------------------------------------------------------------------------------
10 7782,7839,7934
20 7369,7566,7788,7876,7902
30 7499,7521,7654,7698,7844,7900

SQL>
minitoy 2010-10-12
  • 打赏
  • 举报
回复
select a,replace(b,',','') from (
select a,wm_concat(b)over(partition by a order by b) b
row_number()over(partition by a order by b desc) rn

from table)
where rn=1;
使用wm_concat的难点在于控制连接的顺序.
心中的彩虹 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 caimaohua 的回复:]
统计前数据为:
A,B
1,1
1,2
1,3
2,1
2,2
3,3
4,4
求一Oracle 语法统计后为:
A,B
1,123
2,12
3,34
[/Quote]


select A,replace(wm_concat(B),',','') from tb group by A


fxzlxh 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 canhui87 的回复:]

引用楼主 caimaohua 的回复:
统计前数据为:
A,B
1,1
1,2
1,3
2,1
2,2
3,3
4,4
求一Oracle 语法统计后为:
A,B
1,123
2,12
3,34

问题
3,34这个怎么来的
还有4,呢
[/Quote]
估计写错了。。


用递归实现。查查递归的例子就可以了。。
gelyon 2010-10-11
  • 打赏
  • 举报
回复
可能是楼主写错了,应该是 3,4 而不是 4,4
  • 打赏
  • 举报
回复

select A,replace(wm_concat(B),',','') B from table_name group by A;

--好东西
http://blog.csdn.net/gelyon/archive/2010/09/20/5897608.aspx
虫洞 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 caimaohua 的回复:]
统计前数据为:
A,B
1,1
1,2
1,3
2,1
2,2
3,3
4,4
求一Oracle 语法统计后为:
A,B
1,123
2,12
3,34
[/Quote]
问题
3,34这个怎么来的
还有4,呢
gelyon 2010-10-11
  • 打赏
  • 举报
回复

--oracle 10及以上
select A,replace(wm_concat(B),',','') B from table_name group by A;

这类问题有三种方法,详细参考我的BLOG:http://blog.csdn.net/gelyon/archive/2010/09/20/5897608.aspx
Phoenix_99 2010-10-11
  • 打赏
  • 举报
回复
select A,replace(wm_concat(B),',','') B from temp group by A
Phoenix_99 2010-10-11
  • 打赏
  • 举报
回复
用wm_concat

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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