根据最接近的日期值加入
Posted
技术标签:
【中文标题】根据最接近的日期值加入【英文标题】:join based on the closest date value 【发布时间】:2018-03-06 19:53:54 【问题描述】:我想在离我的结束日期最近的日期加入,无论是在我的结束日期之前还是之后。
表A:
A.ID A.StartDate A.EndDate A.ModifiedDate
1 1/1/17 1/15/18 1/16/18
2 2/1/17 3/1/18 3/2/18
表B
B.SetDate B.ID Reason
1/16/18 1 LeftGroup
3/8/18 2 Booted
3/6/18 2 Terminated
输出:应该是这样的
决赛:
ID StartDate EndDate ModifiedDate SetDate Reason
1 1/1/17 1/15/18 1/16/18 1/16/18 LeftGroup
2 2/1/17 3/1/18 3/4/18 3/6/18 Terminated
我的查询如下:
select *
from TableA
left join TableB b on a.id = b.id and AND TRUNC(SH.SET_DATE) BETWEEN TRUNC(CCP.STARTDATE) AND GREATEST(TRUNC(CCP.ENDDATE), TRUNC(CCP.MODIFIED_DATE))
--需要添加另一个连接来获取任何没有相关原因的松散结束日期。
类似的东西 在 a.id = b2.id 上左加入 TableB b2 和 ... 并且 tableb 为空
【问题讨论】:
【参考方案1】:这基本上在this 帖子中得到了回答。
在哪里说:
SELECT TOP 1 *
FROM x
WHERE x.date < 'somedate'
ORDER BY x.date DESC
HTH, 肖恩
【讨论】:
好吧,这在 Oracle 中不起作用(由 OP 标记)。以上是关于根据最接近的日期值加入的主要内容,如果未能解决你的问题,请参考以下文章
sql server 如何将日期时间字段修改成最接近该时间的整点时间?