sql - 仅返回一列中的日期与另一列中的日期最接近的行?
问题描述
我正在处理一个查询,但它返回了一些重复的值,我只需要返回一列中的日期最接近另一列中的日期的行。
我的查询看起来像这样:
SELECT p.Id, r.ReferralDate, s.SupervisionDate
FROM person p
INNER JOIN referral r on r.PersonId = p.Id
INNER JOIN supervision s on s.PersonId = p.Id
它返回如下内容:
ID | 监督日期 | 推荐日期 |
---|---|---|
123 | 2015-09-30 | 2015-08-30 |
123 | 2020-02-30 | 2015-08-30 |
123 | 2020-06-30 | 2015-08-30 |
456 | 2010-06-30 | 2010-07-30 |
456 | 2005-06-30 | 2010-07-30 |
如何编写返回最接近推荐日期的监督日期的查询?所以最终的输出看起来像这样:
ID | 监督日期 | 推荐日期 |
---|---|---|
123 | 2015-09-30 | 2015-08-30 |
456 | 2010-06-30 | 2010-07-30 |
解决方案
另一种方式:
select ID, SUP from
( SELECT
p.Id 'ID',
r.ReferralDate 'REF',
s.SupervisionDate 'SUP',
min(julianday(s.SupervisionDate) - julianday(r.ReferralDate) ) 'diff'
FROM person p
INNER JOIN referral r on r.PersonId = p.Id
INNER JOIN supervision s on s.PersonId = p.Id
GROUP BY p.ID
)
这将根据要求返回 ID 和 SupervisionDate。
推荐阅读
- javascript - 如何将猫鼬连接方法分离到另一个JS文件?
- url - 这个 Steam 桌面快捷方式 URL steam:// 是什么意思
- javascript - 如何使用javascript将相同的类包装在一个父div中
- go - go中的类型转换
- sql - 查找彼此相距 x 个单位内的所有记录
- python - 与系统时间相比,Python 时间滞后
- scala - Scala DataFrame,将非空列的值复制到新列中
- r - 将函数应用于 data.frame 的行
- flutter - 如何在颤动应用程序加载时显示一些加载屏幕或启动画面
- python - Matplotlib:3D 线集合绘制在任何其他绘图之上