百分比正确显示的函数

--百分比正确显示的函数--

 

CREATE FUNCTION orafun.TO_CHAR (num decimal(31,2)) RETURNS VARCHAR(60) LANGUAGE 
SQL CONTAINS SQL SPECIFIC TOCHARDECIMAL1 NO EXTERNAL ACTION DETERMINISTIC 
RETURN case when num <0 and ( length(char(num))-locate('.',char(num))) >1 
then '-' | |varchar(rtrim(char(bigint(num*(-1)))) | |substr( char(num*(-1)),locate('.',char(num*(-1))),length(char(num*(-1)))-locate('.',char(num*(-1))))) 
when ( length(char(num))-locate('.',char(num))) >1 then varchar(rtrim(char(bigint(num))) | |substr( 
char(num),locate('.',char(num)),length(char(num))-locate('.',char(num)))) 
else varchar(char(bigint(num))) end; 

 

 -- 用函数

select orafun.TO_CHAR(1*1.0*100/50)||'%'  from CM_CUST_INFO_MODIFY_QUALITY cq,CM_CARD_SIGN_ADD_QUALITY csq
 group by cq.OPERATOR_ID

 

-- 在ireport中可以加上上'%',SQL中不加'%'因为cast会影响效率.

 select distinct cq.OPERATOR_ID,
 (select count(*) from  CM_CUST_INFO_MODIFY_QUALITY  ) as CUST_QUA_NUM,
 
 cast(
 (select count(*) from  CM_CUST_INFO_MODIFY_QUALITY  )*1.0*100/(select count(*) from CM_CUST_INFO_MODIFY_ENTITY ce ,CM_CUST_INFO_MODIFY cm where ce.CUST_MODIFY_ID = cm.ID  )
 as decimal(4,2)
 )
  as CUST_QUA_RATE, 
 (select count(*) from CM_CARD_SIGN_ADD_QUALITY ) as CARD_QUA_NUM,
 
 cast(
 (select count(*) from CM_CARD_SIGN_ADD_QUALITY )*1.0*100/(select count(*) from CM_CARD_SIGN_ADD ca   )
 as decimal(4,2)
 )
 as CARD_QUA_RATE
 from CM_CUST_INFO_MODIFY_QUALITY cq
 group by cq.OPERATOR_ID

 

 

--一种不太好的写法,可能会带前导00

 select distinct
 
rtrim(
 cast
 (
 
 cast
 (
 (select count(*) from  CM_CUST_INFO_MODIFY_QUALITY  )*1.0*100/(select count(*) from CM_CUST_INFO_MODIFY_ENTITY ce ,CM_CUST_INFO_MODIFY cm where ce.CUST_MODIFY_ID = cm.ID  )
  as decimal(5,3)
 )
 as char(50)
 )
 )
 ||'%'
 
 
 
 as CUST_QUA_RATE
 
 from CM_CUST_INFO_MODIFY_QUALITY cq,CM_CARD_SIGN_ADD_QUALITY csq
 group by cq.OPERATOR_ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值