问个算去年同期值的sql

本帖最后由 charlesxu 于 2013-05-21 11:27:01 编辑

表中数据如下:

日期  得分

2012-1 85

2012-2 98

2012-3 56

2012-4 66

2012-5 34

。。。

。。。

2013-1 82

2013-2 78

2013-3 29

2013-4 77

sql查4个值,日期、得分、去年同期得分、历史最高得分,希望取到的值如下:

日期  得分  去年同期得分 历史最高得分

2012-1 85

2012-2 98

2012-3 56

2012-4 66

2012-5 34

。。。

。。。

2013-1 82     85         85

2013-2 78     98         98

2013-3 29     56         29

2013-4 66     77         77

请问这个sql怎么写?

分享到:

------解决方案--------------------

这效果么

如果日期格式都是固定的 可以

如果是2011-1那可能要找到'-'的位置开始截取了 稍微麻烦了点

with t1 as

(

select '2011-01' dt,85 sc from dual union all

select '2011-02' dt,98 sc from dual union all

select '2011-03' dt,56 sc from dual union all

select '2011-04' dt,66 sc from dual union all

select '2012-01' dt,33 sc from dual union all

select '2012-02' dt,34 sc from dual union all

select '2012-03' dt,54 sc from dual union all

select '2012-04' dt,69 sc from dual union all

select '2013-01' dt,97 sc from dual union all

select '2013-02' dt,43 sc from dual union all

select '2013-03' dt,44 sc from dual union all

select '2013-04' dt,34 sc from dual

)

select dt,sc,s_sc,

(select max(sc) from t1 where t1.dt <= t.dt and substr(t1.dt,-2)=substr(t.dt,-2)) m_sc

from

(

select dt,sc,

case row_number() over(partition by substr(dt,-2) order by rownum)

when 1 then null

else lag(sc) over(order by substr(dt,-2),substr(dt,1,4)) end s_sc

from t1

) t

order by dt

dt      sc    s_sc    m_sc

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

12011-018585

oracle 查询去年同期,问个算去年同期值的sql,该怎么处理相关推荐

  1. oracle查询不等于条件包含null值

    需求:现在oracle数据库中有字段is_use 的值有:null,0,1,2.现在需要查询不等于2的数据 解决办法的sql: select * from uc_Users where nvl(is_ ...

  2. mysql 查询字段中是否存在空格的_mysql查询字段中带空格的值的sql语句

    (1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 代码如下 update ` ...

  3. oracle 查询各科前3名_oracle中的sql求总分前三名

    展开全部 可以用row_number来查询. 1.创建数据表,插入数据:create table sc (id int, name varchar(20), class varchar(20), sc ...

  4. mysql 查询空格_mysql查询字段中带空格的值的sql语句

    查找字段有空格的方法我们可以使用replace替换或使用trim直接查询删除,下面我就先来给各位介绍这两个函数的例子,然后再进行举例说明. (1)mysql replace 函数 语法:replace ...

  5. oracle数据库查询open_cursors值的sql语句,达梦数据库查询MAX_SESSION_STATEMENT值方法,MAX_SESSION_STATEMENT的最大值、上限是多少

    windows 下需要用 cmd 登录 oracle 数据库,用 show parameter open_cursors 来查询. 可以看到 open_cursors 的值为 2000. SQL> ...

  6. oracle查询相同的值,oracle 查询两个字段值相同的记录,

    oracle 查询两个字段值相同的记录,select A.* from tb_mend_enrol A, (select A.Typeid, A.address from tb_mend_enrol ...

  7. oracle 判断11位数字,45个非常有用的 Oracle 查询语句小结

    日期/时间 相关查询 1.获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. SELECT TRUNC ( ...

  8. 从oracle里面取直,45个非常有用的 Oracle 查询语句小结

    日期/时间 相关查询 1.获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. 代码如下: SELECT T ...

  9. 45个非常有用的Oracle查询语句(转自开源中国社区)

    日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. SELECT TRUNC (SY ...

最新文章

  1. wordpress-基础插件,常用函数
  2. WPF动画之后属性值无法改变
  3. Android逆向与病毒分析
  4. 复现经典:《统计学习方法》第21章 PageRank算法
  5. 《数据结构与算法》课程设计任务书——赫夫曼编码/译码器
  6. win7乱码 字符集解决方案
  7. 清除string内容_python爬取哔哩哔哩网页弹幕内容,并将爬取的内容以五角星的形式显示出来...
  8. sql CHECK ,UNIQUE 约束(mysql)
  9. idea 构建spring_以Spring方式构建企业Java应用程序
  10. PHP--去除字符串首尾空格
  11. 真实的布兰妮,有点壮
  12. 安全服务,从“被动应对”到“主动防范”
  13. 三大框架SSM基础知识点
  14. 黑苹果opencore下HD4400打开百度云等软件出现花屏的解决方案
  15. 浅谈计算机网络安全问题和对策
  16. word毕业论文格式排版修改
  17. 微信hook,易语言微信助手功能简单介绍
  18. Java生成随机数的公式
  19. 理想气体的质量流量计算
  20. zTree简单暴力修改图标样式

热门文章

  1. MKB0805心率血压模块使用方法
  2. 信任是高效工作的基石,但是得来却非常不易
  3. 方差与偏差的意义与推导过程
  4. 如何在visio中画出矩阵
  5. FALL_20_NOTE EDAV「Exploratory Data Analysis and Visualization」图像可视化
  6. msi 微星b350 tomahawk主板 刷bios教程
  7. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证
  8. unity手游之聊天SDK集成与使用一
  9. 3D模型欣赏:人形武器 古代兵器 【3D游戏建模教程】
  10. JAVA学习6-集合工具类、流