日期关联取最近日期的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 ...
随机推荐
- 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率
原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...
- 猫哥网络编程系列:详解 BAT 面试题
从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...
- .NET基础拾遗(7)Web Service的开发与应用基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- 浅谈JavaScript中forEach与each
forEach是ES5中操作数组的一种方法,主要功能是遍历数组,例如: var arr = [1,2,3,4]; arr.forEach(alert); 等价于: var arr = [1, 2, 3 ...
- 升级xcode8 之后遇到的一些问题
昨天趁着快下班,就将xcode升级为8了,运行起来并没有什么问题,今天一早过来运行,结果,模拟器打不开了.... 1. unable to boot the Simulator 解决办法:重启Mac时 ...
- PHP安装mysql.so扩展
在PHP中mysql_connect模块已经逐渐被弃用,我在搭建环境时也没有再安装mysql扩展,但是今天在维护一个老项目时,出现报错 Fatal error: Uncaught Error: Cal ...
- 解析大型.NET ERP系统 灵活复杂的界面控件Infragistics WinForms
Infragistics 是.NET平台优秀的控件供应商,囊括了WinForms,ASP.NET,Silverlight,WPF,Windows Phone等所有关于微软.NET技术的界面控件.借助于 ...
- 【兼容写法】HttpServerUtility.Execute 在等待异步操作完成时被阻止。关键词:MVC,分部视图,异步
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html MVC6之前的版本,对分部视图的异步支持不是很好 问题: 视图里面有分布视图:@{ ...
- MSSQLSERVER执行计划详解
序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...
- 【WCF】操作选择器
在开始吹牛之前,先说说.net Core的事情. 你不能把.NET Core作为全新体系来学习,因为它也是.NET.关于.NET Core,老周并不打算写什么,因为你懂了.NET,就懂了.NET Co ...