在oracle中怎样用sql查询某个字段的上年同期数?

参与17

3同行回答

docdoc  项目经理 , 长春理想
你可以这么做: 使用分析函数:偏移量函数 偏移量函数:Lag(exp,N,defval) over(PARTITION BY region order by year) Lag函数为Lag(exp,N,defval),exp是所要取值的列,N表示偏移量,若设为1表示为上一个值,defval是当该函数无值可用的情况下返回的值。region 表示参照序列,只...显示全部

你可以这么做: 使用分析函数:偏移量函数
偏移量函数:Lag(exp,N,defval) over(PARTITION BY region order by year)
Lag函数为Lag(exp,N,defval),exp是所要取值的列,N表示偏移量,若设为1表示为上一个值,defval是当该函数无值可用的情况下返回的值。region 表示参照序列,只对同一个region的值取上一个值。
你写的时候需要按period_key列升序排序,然后新加一列查询"上年本月"偏移12行"本月"的数据就可以了,比如说“本月”里是2018年02月的数据,那你"上年本月"这一列查询出来的就是2019年02月的数据,之后求同比处理一下就出来了。

收起
系统集成 · 2020-04-17
浏览1664
youki2008youki2008  系统架构师 , DDT
可以使用分析函数:偏移量函数偏移量函数:Lag(exp,N,defval) over(PARTITION BY region order by year)Lag函数为Lag(exp,N,defval),exp是所要取值的列,N表示偏移量,若设为1表示为上一个值,defval是当该函数无值可用的情况下返回的值。region 表示参照序列,只对同一个region的值...显示全部

可以使用分析函数:偏移量函数
偏移量函数:Lag(exp,N,defval) over(PARTITION BY region order by year)
Lag函数为Lag(exp,N,defval),exp是所要取值的列,N表示偏移量,若设为1表示为上一个值,defval是当该函数无值可用的情况下返回的值。region 表示参照序列,只对同一个region的值取上一个值。

收起
互联网服务 · 2020-04-23
浏览1732
stevelinchaostevelinchao  数据库管理员 , 身份证中心
select sum(字段) from 表 where 表.date = to_char(add_months(to_date(表.date, 'yyyy-mm'), -12), 'yyyy-mm')) 去年同期值;显示全部

select sum(字段) from 表 where 表.date = to_char(add_months(to_date(表.date, 'yyyy-mm'), -12), 'yyyy-mm')) 去年同期值;

收起
系统集成 · 2020-04-17
浏览1687

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-04-17
  • 关注会员:4 人
  • 问题浏览:2796
  • 最近回答:2020-04-23
  • X社区推广