SQL DB2 LUW V9.7连接到范围内最近的日期
我试图加入到最近的日期与2表(从人到受伤),但只有在有一个记录在过去一个月内 样本表/产出:SQL DB2 LUW V9.7连接到范围内最近的日期,sql,join,db2,db2-luw,Sql,Join,Db2,Db2 Luw,我试图加入到最近的日期与2表(从人到受伤),但只有在有一个记录在过去一个月内 样本表/产出: PEOPLE Name Date John Smith 01/01/2016 Jerry Doe 01/14/2016 Jane Ellis 02/21/2016 Adam Patel 03/21/2016 INJURIES Injury Date Broken Hand 12/30/2015 Broken Wrist 12/31/
PEOPLE
Name Date
John Smith 01/01/2016
Jerry Doe 01/14/2016
Jane Ellis 02/21/2016
Adam Patel 03/21/2016
INJURIES
Injury Date
Broken Hand 12/30/2015
Broken Wrist 12/31/2015
Head Pain 01/13/2016
Broken Hand 02/02/2016
OUTPUT1 (Able to achieve, but not desired)
Name Injury
John Smith Broken Hand
John Smith Broken Wrist
Jerry Doe Broken Hand
Jerry Doe Broken Wrist
Jerry Doe Head Pain
Jane Ellis Broken Hand
Adam Patel {null}
OUTPUT2 (Desired Output)
Name Injury
John Smith Broken Wrist
Jerry Doe Head Pain
Jane Ellis Broken Hand
Adam Patel {null}
有没有一种方法可以让我在流程的任何步骤中都不获得输出1而进行连接?我正在处理大量的记录,并希望以尽可能少的计算能力完成此连接 尽管这是一个糟糕的设计,但此查询将返回您想要的结果:
select
p.name,
(select injury
from injuries x
where x.date between p.date - 1 month and p.date
order by x.date desc
fetch first 1 row only)
from
people p;
出于性能方面的原因,您需要提供一些额外的详细信息,但很可能您希望有一个关于伤害.DATE
的索引(最好按降序排列)
我建议您寻找合适的键来加入表格,因为单独使用日期似乎是获取错误数据的好方法。这是家庭作业吗?(很难想象任何一种真正的应用程序会试图仅根据日期将伤害分配给人)。不是的,我想做的是将处方与疼痛提供者给出的最后诊断联系起来。不幸的是,处方和就诊信息位于两个单独的表中。这可能是两个表,但它们应该有一个公用键-日期可能不是执行此操作的有用键-它可能是一个组件,但不是键。不幸的是,查看数据时,我无法在这两个表之间找到公用键,因为在我的案例中,医疗索赔与处方是分开处理的。表之间唯一的公共键是一个用于标识成员的数字。谢谢你的帮助,这就是我想要的答案。我意识到缺少一个合适的密钥的后果,但是这个解决方案充分利用了我现有的数据。