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. linux yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

  2. CacheManager:–个通用缓存接口抽象类库

    CacheManager是–个缓存通用接口抽象类库,它支持各种高速缓存提供者,例如Memcache,Redis,并且有许多先进的功能特性.具体可以访问官方网站  http://cachemanager ...

  3. Flappy Bird 源码走读

    参考:https://github.com/kirualex/SprityBird 该项目基于spritekit,代码的结构很清楚,感觉用来学习spritekit非常不错. 1.项目只有一个viewC ...

  4. CSharpGL(26)在opengl中实现控件布局/渲染文字

    CSharpGL(26)在opengl中实现控件布局/渲染文字 效果图 如图所示,可以将文字.坐标轴固定在窗口的一角. 下载 CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入( ...

  5. Azure File Storage 基本用法 -- Azure Storage 之 File

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...

  6. C++ 高性能无锁日志系统

    服务器编程中,日志系统需要满足几个条件 .高效,日志系统不应占用太多资源 .简洁,为了一个简单的日志功能引入大量第三方代码未必值得 .线程安全,服务器中各个线程都能同时写出日志 .轮替,服务器不出故障 ...

  7. 在PC上测试移动端网站和模拟手机浏览器的5大方

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

  8. 【Win 10 应用开发】通过数据绑定更新进度条

    实现 INotifyPropertyChanged 接口可以在属性更改后通知数据的使用者,这个相信大伙儿都知道.于是,有朋友会问:对于要实时显示进度的情况,比如更新进度条,能用这个实现吗? 当然是可以 ...

  9. Log4Net生成出现未引用错误解决方法

    1.步骤一: 2.步骤二: 明明添加了引用怎么还提示找不到命名空间呢.解决这个问题很简单,右键项目选择属性: 3.步骤三:换成.NET Framework 4即可,解决! 4.两个有啥区别? Micr ...

  10. 推荐几款jquery图片切换插件

    一.前言 毕业季到了,大家都在匆匆忙忙的记录大学里最美好的时光,照片中各种花式.各种姿势都涌现出来了.这么多的照片怎么展示出来给自己的好友看呢?有人选择做成视频,有人选择ps之后做成图片集,而我选择利 ...