欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

etl中出现一个简单的有关问题,多年经验的高手来看一上

更新时间: 2014-01-05 02:29:29 责任编辑: Author_N1

 

ETL中出现一个简单的问题,多年经验的高手来看一下
我们目前使用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中如何实现这个功能?

我目前在新加坡工作,遇到这个小困难请高手指点。
--参考方法--
行列转换
把行记录转成列记录

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

基本这样就可以了
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:29:29
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10471/
本文WWW.DOC100.NET DOC100.NET版权所有。