问一个行列转换问题,怎么实现?

pingfan520 2008-05-14 04:08:19
请教各位问一个行列转换问题,怎么实现?
表A
PROVINCE PROVINCECODE ORDERBY
北京 bj 01
上海 sh 02
天津 tj 03
.......
西藏 xz 31

表B
PROVINCECODE IP_SUM LOGIN_NUM
bj 100 30
sh 99 9
.......
xj 10 3
xz 0 0

现要求转换为

bj 100 300 sh 99 9 ..... xz 0 0

其中表B的记录不重复

该怎么实现呢,先谢谢大家了
...全文
153 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pingfan520 2008-05-22
  • 打赏
  • 举报
回复
谢谢大家,自己用存储过程实现了。
zzjj770909 2008-05-16
  • 打赏
  • 举报
回复
select RTRIM(REPLACE(bbb,'-',' '),' ')
from
(
select connect_by_isleaf aaa,sys_connect_by_path(provincecode | |ip_sum | |login_num, '-') as bbb
from
(
select b.provincecode, b.ip_sum, b.login_num,rownum c2,rownum-1 c1
from tbla a, tblb b
where a.provincecode = b.provincecode
order by a.orderby
)c
start with c1 = '0' connect by prior c2 = c1
)
where aaa=1;
oracle_dba_11 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wypudong 的回复:]
写个function循环拼出来,然后select function
[/Quote]
这个以前好像在哪看过,不过没在意,你可以研究下
随便说下,我是菜鸟
zzjj770909 2008-05-14
  • 打赏
  • 举报
回复
select bbb
from
(
select connect_by_isleaf aaa,sys_connect_by_path(provincecode||ip_sum||login_num, '-') as bbb
from
(
select b.provincecode, b.ip_sum, b.login_num,rownum c2,rownum-1 c1
from tbla a, tblb b
where a.provincecode = b.provincecode
order by a.orderby
)c
start with c1 = '0' connect by prior c2 = c1
)
where aaa=1;
pingfan520 2008-05-14
  • 打赏
  • 举报
回复
不重复
zzjj770909 2008-05-14
  • 打赏
  • 举报
回复
那么表A中的PROVINCECODE是可以重复的吗???
zzjj770909 2008-05-14
  • 打赏
  • 举报
回复
那么表A中的PROVINCECODE是可以重复的吗???
pingfan520 2008-05-14
  • 打赏
  • 举报
回复
表A也是固定的,decode太头晕了,有没有比较简单的办法呢!
ehuman 2008-05-14
  • 打赏
  • 举报
回复
使用Case转,
比较烦。
wypudong 2008-05-14
  • 打赏
  • 举报
回复
写个function循环拼出来,然后select function
hebo2005 2008-05-14
  • 打赏
  • 举报
回复
表A的数据是固定的?
如果是固定的
就用max(decode( PROVINCECODE ,'bj',IP_SUM ,0)) bj_IP_SUM 来实现
就是烦点,要写可能90多个decode
如果不固定的,写存储过程实现吧

17,089

社区成员

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

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