ETL中出现一个简单的问题,多年经验的高手来看一下

555555555555555 2011-10-12 04:27:45
我们目前使用Oracle 10g,有一个customer表储存用户的数据,还有个address表储存用户的办公室和居住地址。

在这个address表中,有个addresstype,就是来说明用户的住址是什么类型,不过地址不是完全的,就是说有的customer对应的数据,在地址表中只有办公室地址没有住址。数据当时设计的时候只考虑ERP用户操作了,根本没考虑什么数据仓库。

表的结构,目前customer表的主键是cust_id,address也用了这个当作一个外键来对应数据。就是说对应的每个顾客都有地址存放在地址表里面。

所以数据大概如下

customer 用户信息表
cust_id ...
1 ...
2...
3...


address 地址表
cust_id addresstype ...
1 office ...
1 residential ...
2 office ...
3 office ...


上面大概就是说1号顾客有两个地址,2号3号顾客都只有办公室地址。

请问这种情况我该如何把表格变形?

我的设想是如果addresstype = residential,我就把这行合并到office去,反正都是同一个customer,他们的cust_id一样。

如果是这样我应该怎么做?

再oracle data miner中如何实现这个功能?

我目前在新加坡工作,遇到这个小困难请高手指点。
...全文
147 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rock_Wu 2011-10-13
  • 打赏
  • 举报
回复
行列转换
把行记录转成列记录

address 地址表
cust_id office,residential ...
1 aaa bbbb
2 ccc
3 ddd
4 ddd
没有的就为空

具体的语句就是用case

select cust_id,office=max(case addresstype when office then office else '' end ),residential ==max(case addresstype when residential then residential else '' end ),
from address
group by cust_id

基本这样就可以了
555555555555555 2011-10-13
  • 打赏
  • 举报
回复
看到回答好办法,非常感谢。

7,388

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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