用分析函数查出来的字段怎末和前面的字段进行计算

with H as(

select F.PRO_DATE,

       F.PRO_NAME,

       F.PRO_AMO,

       lag(pro_amo, 3, null) over(order by pro_name ) as 上年末

from FR_202203Last3YSKDC_TABLE F

)

select *

from H

where h.pro_amo is not null and h.上年末 is not null

用完分析函数 查询出的结果比较分散 所以用了with as 

还需要计算pro_amo-上年末与(pro_amo-上年末)/上年末

image.png

SQL ROBOT 发布于 2022-10-25 10:38
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2022-10-25 10:42

select h.pro_amo-h.上年末 as a,

          (h.pro_amo-h.上年末)/h.上年末 as b

from H

where h.pro_amo is not null and h.上年末 is not null

这样不行?

最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-10-25 10:40(编辑于 2022-10-25 10:42)

再 外面套一层select呗

-------------

这种应该不用套了

with H as(

select F.PRO_DATE,

       F.PRO_NAME,

       F.PRO_AMO,

       lag(pro_amo, 3, null) over(order by pro_name ) as 上年末

from FR_202203Last3YSKDC_TABLE F

)

select *,pro_amo-上年末,(pro_amo-上年末)/上年末

from H

where h.pro_amo is not null and h.上年末 is not null

最佳回答
0
IceBall09Lv6中级互助
发布于2022-10-25 10:43(编辑于 2022-10-25 10:43)

with H as(

select F.PRO_DATE,

       F.PRO_NAME,

       F.PRO_AMO,

       lag(pro_amo, 3, null) over(order by pro_name ) as 上年末

from FR_202203Last3YSKDC_TABLE F

)

select 

*,

NVL(PRO_AMO, 0)-NVL(上年末, 0) as A,

CASE WHEN NVL(上年末, 0) = 0 THEN 0 ELSE (NVL(PRO_AMO, 0)-NVL(上年末, 0)) / 上年末 END as B

from H

where h.pro_amo is not null and h.上年末 is not null

防止除数为0

  • 3关注人数
  • 273浏览人数
  • 最后回答于:2022-10-25 10:43
    请选择关闭问题的原因
    确定 取消
    返回顶部