日期关联取最近日期的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 ...
随机推荐
- ubuntu14.04下安装node.js
在网上查了下,起初是下载了一个node-v0.12.7-linux-x64.tar.gz,解压在/home/node路径下,然后在/etc/profile中添加如下命令: export NODE_HO ...
- 机器指令翻译成 JavaScript —— 终极目标
上一篇,我们顺利将 6502 指令翻译成 C 代码,并演示了一个案例. 现在,我们来完成最后的目标 -- 转换成 JavaScript. 中间码输出 我们之所以选择 C,就是为了使用 LLVM.现在来 ...
- 性能测试工具 wrk 安装与使用
介绍 今天给大家介绍一款开源的性能测试工具 wrk,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以 ...
- 一步步学习javascript基础篇(7):BOM和DOM
一.什么是BOM.什么是DOM BOM即浏览器对象模型,主要用了访问一些和网页无关的浏览器功能.如:window.location.navigator.screen.history等对象. DOM即文 ...
- 前端构建大法 Gulp 系列 (四):gulp实战
前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家 前 ...
- 线程笔记:Future模式
线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一个主线程执行javascri ...
- Java 8函数编程轻松入门(四)方法引用
C#中系统提供了许多IEnumerable的扩展方法.同样在Java 8中新引入了Collector类. 1.方法引用 定义: 简而言之:就是一个Lambda表达式.在Java 8中,我们我们会使用L ...
- SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,合计,小计
表结构: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, [Sex] [int] NOT NULL, ) NULL, ) NULL, , ) N ...
- Nginx配置详解
序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也 ...
- SQL Server-聚焦NOT EXISTS AND NOT IN性能分析(十五)
前言 上一节我们分析了INNER JOIN和IN,对于不同场景其性能是不一样的,本节我们接着分析NOT EXISTS和NOT IN,简短的内容,深入的理解,Always to review the b ...