日期关联取最近日期的SQL
SQL怎么关联,如下图A表用日期加产品编号关联B表的时候,如果日期不存在,则取之前最近一个日期的值,比如A表2012-07-31 关联B表,B表没有对应日期的,就取2012-07-30的
|
A表 |
B表 |
|||||
|
日期 |
产品编号 |
值1 |
日期 |
产品编号 |
值1 |
|
|
|
|
|
2012-7-30 |
F003003 |
11 |
|
|
2012-7-31 |
F003003 |
1 |
|
|
|
|
|
2012-8-1 |
F003003 |
2 |
2012-8-1 |
F003003 |
12 |
|
|
2012-8-2 |
F003003 |
3 |
2012-8-2 |
F003003 |
13 |
|
|
2012-8-3 |
F003003 |
4 |
2012-8-3 |
F003003 |
14 |
|
|
2012-8-4 |
F003003 |
5 |
|
|
|
|
|
2012-8-5 |
F003003 |
6 |
|
|
|
|
|
2012-8-6 |
F003003 |
7 |
2012-8-6 |
F003003 |
15 |
|
|
2012-8-7 |
F003003 |
8 |
2012-8-7 |
F003003 |
16 |
|
|
2012-8-8 |
F003003 |
9 |
2012-8-8 |
F003003 |
17 |
|
|
2012-8-9 |
F003003 |
10 |
2012-8-9 |
F003004 |
18 |
|
|
结果 |
||||||
|
日期 |
产品编号 |
值1 |
|
|
|
值2 |
|
2012-7-31 |
F003003 |
1 |
|
2012-7-30 |
F003003 |
11 |
|
2012-8-1 |
F003003 |
2 |
|
2012-8-1 |
F003003 |
12 |
|
2012-8-2 |
F003003 |
3 |
|
2012-8-2 |
F003003 |
13 |
|
2012-8-3 |
F003003 |
4 |
|
2012-8-3 |
F003003 |
14 |
|
2012-8-4 |
F003003 |
5 |
|
2012-8-3 |
F003003 |
14 |
|
2012-8-5 |
F003003 |
6 |
|
2012-8-3 |
F003003 |
14 |
|
2012-8-6 |
F003003 |
7 |
|
2012-8-6 |
F003003 |
15 |
|
2012-8-7 |
F003003 |
8 |
|
2012-8-7 |
F003003 |
16 |
|
2012-8-8 |
F003003 |
9 |
|
2012-8-8 |
F003003 |
17 |
|
2012-8-9 |
F003003 |
10 |
|
2012-8-9 |
F003004 |
18 |
SELECT * FROM (
SELECT a.done_date,a.done_code,a.ext,
last_value(b.done_date IGNORE NULLS) over(ORDER BY nvl(b.done_date,a.done_date)) bdone_date,
last_value(b.done_code IGNORE NULLS) over(ORDER BY nvl(b.done_date,a.done_date)) bdonecode,
last_value(b.ext IGNORE NULLS) over(ORDER BY nvl(b.done_date,a.done_date)) bext
FROM a FULL JOIN b
ON a.done_date=b.done_date
AND a.done_code=b.done_code
) WHERE done_date IS NOT NULL
/
DONE_DATE DONE_CODE EXT BDONE_DATE BDONECODE BEXT
----------- ---------- ---------- ----------- ---------- ----------
2012-07-31 F003003 1 2012-07-30 F003003 11
2012-08-01 F003003 2 2012-08-01 F003003 12
2012-08-02 F003003 3 2012-08-02 F003003 13
2012-08-03 F003003 4 2012-08-03 F003003 14
2012-08-04 F003003 5 2012-08-03 F003003 14
2012-08-05 F003003 6 2012-08-03 F003003 14
2012-08-06 F003003 7 2012-08-06 F003003 15
2012-08-07 F003003 8 2012-08-07 F003003 16
2012-08-08 F003003 9 2012-08-08 F003003 17
2012-08-09 F003003 10 2012-08-09 F003003 18
10 rows selected
日期关联取最近日期的SQL的更多相关文章
- Element UI:DatePicker的终止日期与起始日期关联
Template // 起始日期 <el-date-picker v-model="queryParams.startTime" :picker-options=" ...
- VFP调整本机日期时间与服务器日期时间一致
*!*调整本机日期时间与服务器日期时间一致( YYYY-MM-DD HH:MM:SS.FFF )*!*以下cSqlStr及nCon为SQL查询串及连接句柄cSqlStr="Select Sy ...
- java获取当天,前天,明天,本周,本月,本年的开始日期时间和结束日期时间
package demoone; import java.sql.Timestamp; import java.text.ParseException; import java.text.Simple ...
- mysql插入日期 vs oracle插入日期
今天做oracle日期插入的时候突然开始疑惑日期是如何插入的. 用框架久了,反而不自己做简单的工作了.比如插入. 通常,新建一个表对象,然后绑定数据,前端form提交,后端getModel后直接mod ...
- [sql server、oracle] 分组取最大值最小值常用sql
sqlserver2005前: --分组取最大最小常用sql--测试环境if OBJECT_ID('tb') is not null drop table tb;gocreate table tb( ...
- php日期转时间戳,指定日期转换成时间戳
写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储.处理方便,但 是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么 ...
- mysql查询日期内的所有日期代码
一.MYSQL查询最近的三个月份的简便方法: select date_format(curdate(),'%Y-%m') from dual union MONTH),'%Y-%m') from du ...
- delphi ----日期控件运用,日期问题,日期时间比较
一.日期控件 1.DateTimePicker 1)只显示年月 DateMode:dmUpDown format:yyyy-MM 2)将DateTimePicker的Format属性中加入日期格式设成 ...
- javascript日期验证:填写的日期大于等于当前日期
<script> $(function () { var d = new Date(); var strDate = getDateStr(d); $("#beginTime&q ...
随机推荐
- Java
2016-12-17 21:10:28 吉祥物:Duke(公爵) Logo:咖啡(爪哇岛盛产咖啡) An overview of the software development proce ...
- 执行git push出现"Everything up-to-date"
在github上git clone一个项目,在里面创建一个目录,然后git push的时候,出现报错"Everything up-to-date" 原因:1)没有git add . ...
- 札记:Java异常处理
异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...
- 《高性能javascript》一书要点和延伸(上)
前些天收到了HTML5中国送来的<高性能javascript>一书,便打算将其做为假期消遣,顺便也写篇文章记录下书中一些要点. 个人觉得本书很值得中低级别的前端朋友阅读,会有很多意想不到的 ...
- 在 Linux 中使用 Eclipse 和 Gnu Autotools 管理 C/C++ 项目
在我该系列的之前的所有随笔中,都是采用 Linux 发行版自带的包管理工具(如 apt-get.yum 等)进行软件的安装和卸载,从来没有向大家展示使用源代码自行编译安装软件的方法.但是长期混迹于 U ...
- Restful WebApi项目开发实践
前言 踩过了一段时间的坑,现总结一下,与大家分享,愿与大家一起讨论. Restful WebApi特点 WebApi相较于Asp.Net MVC/WebForm开发的特点就是前后端完全分离,后端使用W ...
- Windows.document
一.找到元素: document.getElementById("id");根据id找,最多找一个 var a =document.getElementById("id& ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
- .Net使用RabbitMQ详解
序言 这里原来有一句话,触犯啦天条,被阉割!!!! 首先不去讨论我的日志组件怎么样.因为有些日志需要走网络,有的又不需要走网路,也是有性能与业务场景的多般变化在其中,就把他抛开,我们只谈消息Rabbi ...
- angular + easyui 做界面验证
angular结合easyui这事其实并不是很合适,因为:angular的特点之一是双向绑定,页面元素与页面逻辑之间解耦:easyui是对页面元素进行封装,甚至一些组件是隐藏了原本的dom元素,初始化 ...