我想加入与我的结束日期最接近的日期,无论是在我的结束日期之前还是之后。
表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))
- 需要添加另一个连接来拾取任何没有与之关联的原因的松散enddate。
等等 在a.id = b2.id上左连接TableB b2 和...... 和tableb为空答案 0 :(得分:0)
这基本上是在this帖子中回答的。
在哪里说:
SELECT TOP 1 *
FROM x
WHERE x.date < 'somedate'
ORDER BY x.date DESC
HTH, 肖恩