SQL DB2 LUW V9.7 加入范围内最近的日期
SQL DB2 LUW V9.7 Join to Nearest Date within range
我正在尝试使用 2 个表(从 PEOPLE 到 INJURIES)加入最近的日期,但前提是过去一个月内有记录。
样本tables/outputs:
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}
有没有一种方法可以在过程的任何步骤中不获取 output1 的情况下进行连接?我正在处理大量记录,并希望以尽可能少的计算能力进行此连接。
尽管这是一个糟糕的设计,但此查询将 return 您想要的结果:
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;
出于性能原因,您需要提供一些额外的详细信息,但您可能希望在 INJURIES.DATE
上有一个索引(最好按降序排列)。
我建议您寻找合适的键来连接表,因为单独使用日期似乎是获取错误数据的好方法。
我正在尝试使用 2 个表(从 PEOPLE 到 INJURIES)加入最近的日期,但前提是过去一个月内有记录。
样本tables/outputs:
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}
有没有一种方法可以在过程的任何步骤中不获取 output1 的情况下进行连接?我正在处理大量记录,并希望以尽可能少的计算能力进行此连接。
尽管这是一个糟糕的设计,但此查询将 return 您想要的结果:
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;
出于性能原因,您需要提供一些额外的详细信息,但您可能希望在 INJURIES.DATE
上有一个索引(最好按降序排列)。
我建议您寻找合适的键来连接表,因为单独使用日期似乎是获取错误数据的好方法。