oracle 查询去年同期,问个算去年同期值的sql,该怎么处理
问个算去年同期值的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,该怎么处理相关推荐
- oracle查询不等于条件包含null值
需求:现在oracle数据库中有字段is_use 的值有:null,0,1,2.现在需要查询不等于2的数据 解决办法的sql: select * from uc_Users where nvl(is_ ...
- mysql 查询字段中是否存在空格的_mysql查询字段中带空格的值的sql语句
(1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 代码如下 update ` ...
- oracle 查询各科前3名_oracle中的sql求总分前三名
展开全部 可以用row_number来查询. 1.创建数据表,插入数据:create table sc (id int, name varchar(20), class varchar(20), sc ...
- mysql 查询空格_mysql查询字段中带空格的值的sql语句
查找字段有空格的方法我们可以使用replace替换或使用trim直接查询删除,下面我就先来给各位介绍这两个函数的例子,然后再进行举例说明. (1)mysql replace 函数 语法:replace ...
- oracle数据库查询open_cursors值的sql语句,达梦数据库查询MAX_SESSION_STATEMENT值方法,MAX_SESSION_STATEMENT的最大值、上限是多少
windows 下需要用 cmd 登录 oracle 数据库,用 show parameter open_cursors 来查询. 可以看到 open_cursors 的值为 2000. SQL> ...
- oracle查询相同的值,oracle 查询两个字段值相同的记录,
oracle 查询两个字段值相同的记录,select A.* from tb_mend_enrol A, (select A.Typeid, A.address from tb_mend_enrol ...
- oracle 判断11位数字,45个非常有用的 Oracle 查询语句小结
日期/时间 相关查询 1.获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. SELECT TRUNC ( ...
- 从oracle里面取直,45个非常有用的 Oracle 查询语句小结
日期/时间 相关查询 1.获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. 代码如下: SELECT T ...
- 45个非常有用的Oracle查询语句(转自开源中国社区)
日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 "SYSDATE"来指定查询的日期. SELECT TRUNC (SY ...
最新文章
- wordpress-基础插件,常用函数
- WPF动画之后属性值无法改变
- Android逆向与病毒分析
- 复现经典:《统计学习方法》第21章 PageRank算法
- 《数据结构与算法》课程设计任务书——赫夫曼编码/译码器
- win7乱码 字符集解决方案
- 清除string内容_python爬取哔哩哔哩网页弹幕内容,并将爬取的内容以五角星的形式显示出来...
- sql CHECK ,UNIQUE 约束(mysql)
- idea 构建spring_以Spring方式构建企业Java应用程序
- PHP--去除字符串首尾空格
- 真实的布兰妮,有点壮
- 安全服务,从“被动应对”到“主动防范”
- 三大框架SSM基础知识点
- 黑苹果opencore下HD4400打开百度云等软件出现花屏的解决方案
- 浅谈计算机网络安全问题和对策
- word毕业论文格式排版修改
- 微信hook,易语言微信助手功能简单介绍
- Java生成随机数的公式
- 理想气体的质量流量计算
- zTree简单暴力修改图标样式