查找表 B 中相对于表 A 日期的最新值

Posted

技术标签:

【中文标题】查找表 B 中相对于表 A 日期的最新值【英文标题】:Finding Most Recent Value in Table B Relative to Table A's Date 【发布时间】:2020-09-08 16:29:21 【问题描述】:

我目前有两个表:table atable b

我的目标是从table b 中获取最新分数,并使用table a 中的连接将其添加为新列(但是,当我说“最新”时,我的真正意思是“与Event_Date 相关的最新分数在table a 中列出)

我假设它将是 left join,但在拉动 Score 时遇到问题。我所知道的就是拉日期:

select 
a.Entity_ID,
a.Event_Date,
max(b.date_processed) --I want to change this to the score correlated to the max date_processed
from myTable a
left join myTable b
on a.Entity_ID = b.Entity_ID and b.date_processed < a.event_date
Group By a.Entity_ID, a.Event_Date, b.Date_Processed

任何帮助将不胜感激

【问题讨论】:

请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 停止尝试编写您的总体目标并从给定的代码中解释您的期望以及原因。 这是一个常见问题解答。在考虑发布之前,请阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:***.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。 PS请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或扩充文本的内容。 【参考方案1】:

我了解到您想要从tabebprior 到event_datetablea 的最新分数。

一个选项使用带有行限制子句的相关子查询:

select 
    a.*,
    (
        select b.score
        from tableb b
        where b.entity_id = a.entity_id and b.date_processed <= a.event_date
        order by b.date_processed desc
        fetch first 1 row only
    ) most_recent_score
from tablea a

【讨论】:

以上是关于查找表 B 中相对于表 A 日期的最新值的主要内容,如果未能解决你的问题,请参考以下文章

仅返回表 B 中存在的表 A 的一个值

查找存在于两个不同表中的单个行

查找具有特定值的最新记录

在没有多个连接的情况下查找两个表中的差异

计算表A中存在于表B正方形区域中的点数 - SQL + QGIS

SQL:如何从表A中一一检查是不是存在于表B上?