!!!结构调优,请高手指点,

heyang714 2010-12-16 09:06:25
1.
表:TABLE1
clm1 clm2 clm3 clum4 balance
------------------------------
A B C D 100.00

现在有如上一组数据,现在要根据字段clm1,clm2,clm3,clm4的不同组合,返回不同的比例数据,得到数据如下。
clm1 clm2 clm3 clum4 balance1 balance2 balance3 balance4
------------------------------
A B C D 100.00*10% 100.00*30% 100.00*70% 100.00*50%

2.
我写了个FUNCTION FUNC_A用于根据clm1 clm2 clm3 clum4的不通过组合,返回比例10%,30%,70%,50%
SQL如下:
select
clm1,
clm2,
clm3,
clum4,
balance*FUNC_A(clm1,clm2,clm3,clum4,1) balance1,
balance*FUNC_A(clm1,clm2,clm3,clum4,2) balance2,
balance*FUNC_A(clm1,clm2,clm3,clum4,3) balance3,
balance*FUNC_A(clm1,clm2,clm3,clum4,4) balance4
FROM TABLE1

此处使用了4次FUNCIION,能否只使用1次?,
另,FUNCITON内部处理较多,不能使用CASE WHEN 方法解决。请大家帮忙看看。
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2010-12-17
  • 打赏
  • 举报
回复
RATIO_TO_REPOR oracle自带的函数,专门用来计算整体比例的!
碧水幽幽泉 2010-12-17
  • 打赏
  • 举报
回复
oracle中有个人RATIO_TO_REPORT函数是用来计算比例的,应该可以解决你的难题!
heyang714 2010-12-16
  • 打赏
  • 举报
回复
返回多个值可以使用对象解决,但如果是在SQL里面如何使用呢?

我现在想到的办法是开游标,遍历数据,
逐个调用方法,返回4个比率,然后乘比例,得到结果数据,
但是,我担心,游标效率问题,因为数据量基数比较大。
WUNKANG 2010-12-16
  • 打赏
  • 举报
回复
函数只能返回一个值
/
你可以通过存储过程返回多个,但是不能在SQL中直接调用
heyang714 2010-12-16
  • 打赏
  • 举报
回复
如果说,我的函数同时返回4个系数呢?
gelyon 2010-12-16
  • 打赏
  • 举报
回复
怎么可能只用一次啊,你参数都不同,当然返回值也不同啊

3,491

社区成员

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

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