IT分销/经销

谁能解释下这个问题是怎么回事

SQL1 with source as (         select                 option as OptionOrAPEXMTM,                 REV,       ...显示全部
SQL1
with source
as 
(
        select
                option as OptionOrAPEXMTM,
                REV,
                VOL,
                rank() over(order by REV desc) as rk
        from 
                P2P.SYSX_REPORT3 
        where 
                status='Active' and REV is not null
        order by rev desc
)

        select 
                s.rk,
                s.OptionOrAPEXMTM,
                s.REV,
                s.VOL,
                ( select sum(rev) from source as sc where sc.rk <= s.rk) as Increase,
                (select sum(rev) from source) as total,
                (( select sum(rev) from source as sc where sc.rk <= s.rk)/(select sum(rev) from source)) as percent --这里
        from
                source as s


pic1.jpg


SQL2:
with source
as 
(
        select
                option as OptionOrAPEXMTM,
                REV,
                VOL,
                rank() over(order by REV desc) as rk
        from 
                P2P.SYSX_REPORT3 
        where 
                status='Active' and REV is not null
        order by rev desc
)

        select 
                s.rk,
                s.OptionOrAPEXMTM,
                s.REV,
                s.VOL,
                ( select sum(rev) from source as sc where sc.rk <= s.rk) as Increase,
                (select sum(rev) from source) as total,
                (( select sum(rev) from source as sc where sc.rk <= s.rk)*1.0000/(select sum(rev) from source)) as percent --这里,*1.0000
        from
                source as s




我用SQL1去一个view的结果,逻辑跟这个一模一样,跑出来的percent是正常的小树,但是SQL1去跑这个view的时候就是0和1了(我猜的是被强制转化成int了). 请教各位,为什么会成这个样子啊?收起
参与3

查看其它 1 个回答zzrisme的回答

zzrismezzrismeit技术咨询顾问IBM
除法精度问题,设一下MIN_DEC_DIV_3可以解决,默认情况下商的精度是除数和被除数计算出来的,信息中心有一个公式的。
IT咨询服务 · 2012-11-03
浏览664

回答者

zzrisme
it技术咨询顾问IBM

zzrisme 最近回答过的问题

回答状态

  • 发布时间:2012-11-03
  • 关注会员:1 人
  • 回答浏览:664
  • X社区推广