存储过程编写问题

JS 2012-08-16 06:04:25
场景:
1 4105000000000180 11
2 4105000000000180 41
3 4105000000000180 31
4 4105000000000180 51
5 4105000000000181 42
6 4105000000000181 12
7 4105000000000181 11
8 4105000000000181 4
9 4105000000000188 45
10 4105000000000188 32
11 4105000000000188 21
12 4105000000000189 10

目标:
1 4105000000000180 11 41 31 51
5 4105000000000181 42 12 11 4
9 4105000000000188 45 32 21
12 4105000000000189 10

注:不是拼接,是行转列,数据很多,分组很多,所以需要用存储过程解决,
11 41 31 51 '' ''
42 12 11 4 '' ''
45 32 21 '' '' ''
10 '' '' '' '' ''
这个最多六列,没有数据的为空
请高人帮忙解答,谢谢
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JS 2012-08-17
  • 打赏
  • 举报
回复
求高人出现
JS 2012-08-16
  • 打赏
  • 举报
回复
9i以上版本才能用wm_concat吧,还有我说了不是拼接,是行转列[Quote=引用 1 楼 的回复:]

ms不需要存储过程,用wm_concat函数就可以实现

create table t(id int, x int, y int);
insert into t values (1, 4105000000000180, 11);
insert into t values (2, 4105000000000180, 41);
insert into t values (3, 410500……
[/Quote]
fw0124 2012-08-16
  • 打赏
  • 举报
回复
select min(id), x, wm_concat(y) from t group by x;
fw0124 2012-08-16
  • 打赏
  • 举报
回复
ms不需要存储过程,用wm_concat函数就可以实现

create table t(id int, x int, y int);
insert into t values (1, 4105000000000180, 11);
insert into t values (2, 4105000000000180, 41);
insert into t values (3, 4105000000000180, 31);
insert into t values (4, 4105000000000180, 51);
insert into t values (5, 4105000000000181, 42);
insert into t values (6, 4105000000000181, 12);
insert into t values (7, 4105000000000181, 11);
insert into t values (8, 4105000000000181, 4);
insert into t values (9, 4105000000000188, 45);
insert into t values (10, 4105000000000188, 32);
insert into t values (11, 4105000000000188, 21);
insert into t values (12, 4105000000000189, 10);
commit;

select min(id), wm_concat(y) from t group by x;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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