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的更多相关文章

  1. Element UI:DatePicker的终止日期与起始日期关联

    Template // 起始日期 <el-date-picker v-model="queryParams.startTime" :picker-options=" ...

  2. VFP调整本机日期时间与服务器日期时间一致

    *!*调整本机日期时间与服务器日期时间一致( YYYY-MM-DD HH:MM:SS.FFF )*!*以下cSqlStr及nCon为SQL查询串及连接句柄cSqlStr="Select Sy ...

  3. java获取当天,前天,明天,本周,本月,本年的开始日期时间和结束日期时间

    package demoone; import java.sql.Timestamp; import java.text.ParseException; import java.text.Simple ...

  4. mysql插入日期 vs oracle插入日期

    今天做oracle日期插入的时候突然开始疑惑日期是如何插入的. 用框架久了,反而不自己做简单的工作了.比如插入. 通常,新建一个表对象,然后绑定数据,前端form提交,后端getModel后直接mod ...

  5. [sql server、oracle] 分组取最大值最小值常用sql

    sqlserver2005前: --分组取最大最小常用sql--测试环境if OBJECT_ID('tb') is not null drop table tb;gocreate table tb(  ...

  6. php日期转时间戳,指定日期转换成时间戳

    写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储.处理方便,但 是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么 ...

  7. mysql查询日期内的所有日期代码

    一.MYSQL查询最近的三个月份的简便方法: select date_format(curdate(),'%Y-%m') from dual union MONTH),'%Y-%m') from du ...

  8. delphi ----日期控件运用,日期问题,日期时间比较

    一.日期控件 1.DateTimePicker 1)只显示年月 DateMode:dmUpDown format:yyyy-MM 2)将DateTimePicker的Format属性中加入日期格式设成 ...

  9. javascript日期验证:填写的日期大于等于当前日期

    <script> $(function () { var d = new Date(); var strDate = getDateStr(d); $("#beginTime&q ...

随机推荐

  1. 《CPU的工作过程》

    本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_proces ...

  2. SQL Server页类型汇总+疑问

    该文章整理自:http://www.sqlnotes.info/2011/10/31/page-type/ SQL Server中包含多种不同类型的页,来满足数据存储的需求.不管是什么类型的页,它们的 ...

  3. 反编译.NET工程

    工具:       1.  .Net Reflector       2.   远程桌面 步骤: 1. 远程桌面连接到服务器 IP,port,user,pwd 2. 打开 IIS 这里面就是所部属的网 ...

  4. 父ListView嵌套子ListView时点击事件没有响应

    转发请备注出处:http://www.cnblogs.com/LT5505/p/5972999.html 问题: 在ListView中嵌套ListView之后,子ListView会把父ListView ...

  5. Android开发之Android Material Design Toolbar自定义随笔

    一.自定义Toolbar的menu: 在menu下新建menu.xml文件,自定义menu的样式: <menu xmlns:android="http://schemas.androi ...

  6. js基本类型和引用类型

    先来两个例题 //1. var person; person.age=10; console.log(person.age) //undefined person是字符串而不是对象,没有属性 //2. ...

  7. Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

  8. Python模拟登陆新浪微博

    上篇介绍了新浪微博的登陆过程,这节使用Python编写一个模拟登陆的程序.讲解与程序如下: 1.主函数(WeiboMain.py): import urllib2 import cookielib i ...

  9. iOS APP 如何做才安全

    本来 写了一篇<iOS 如何做才安全--逆向工程 - Reveal.IDA.Hopper.https抓包 等>,发现文章有点杂,并且“iOS 如何做才安全”这部分写的越来越多,觉得 分出来 ...

  10. [C#] 走进异步编程的世界 - 剖析异步方法(下)

    走进异步编程的世界 - 剖析异步方法(下) 序 感谢大家的支持,这是昨天发布<走进异步编程的世界 - 剖析异步方法(上)>的补充篇. 目录 异常处理 在调用方法中同步等待任务 在异步方法中 ...