接到一个cognos报表修改任务,要求在客户在某省哪些网点开过银行卡。数据通过整理后大概是这样子的(二级行,开户网点,客户编号,客户名称)。
由于数据量比较大,和同事交流了下有了下面三个方法,如果有更好建议的请说出来,一起学习学习。
有点纠结这个事放在cognos文章下面还是oracle文章下面,后来想想函数这一类的还是放在oracle下面好点吧。
1.自己新建函数,把处理过程写在函数里面,然后通过日期、二级行编号、客户编号查询函数得到客户在二级行下开户的网点名
2.新建数据表,以日期、二级行编号、客户编号为主键,客户在二级行下开户的网点名称为从键对数据存储,通过字段关联得到想要数据
3.巧用列转行函数
wmsys.wm_concat(b)
/*展示某一组下面所有b字段的数据*/
--用途:比如在一列展示同一组所有员工的名字,某客户在二级行下开过户的网点名称
select 二级行,客户名称
to_char(wmsys.wm_concat(distinct 开户网点 )) 开户网点
from 整理表 t
group by 二级行,客户名称
方法比较:
这里把三种方法都写出来只是为了突出在某些情况中巧用函数能够省很多事。