根据日期范围联接两个表

时间:2020-05-03 13:30:16

标签: sql join firebird

我的Firebird数据库中有两个表。第一个表称为LEDGER,它显示我的交易详细信息,包括交易日期(yyyy / mm / dd)。第二个表称为PERIODS,由以下字段组成:

  • 期间号(INTEGER)
  • 开始日期(yyyy / mm / dd)
  • 结束日期(yyyy / mm / dd)

我想使用LEDGER表中的日期从PERIODS表中查找相应的期间,并基于此表将两个表连接起来。简而言之,我想显示分类帐表格每一行的时间段,以帮助我准备合并报表。

下面是PERIODS表的示例:

enter image description here

什么是最好的方法?

如果我是开发人员,则可以将期间添加到分类帐表中,并在事务级别填充该期间,但不幸的是现在为时已晚。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以只使用join

select l.*, p.per
from ledger l left join
     periods p
     on l.date_of_transaction >= p.start_date and
        l.date_of_transaction <= p.end_date

答案 1 :(得分:0)

使用以下查询。请更改列名,我已经提供了列名作为示例。

select P.PER, L.* from LEDGER L
inner join PERIODS P
on (L.date_of_transaction = P.start_date);



select P.PER, L.* from LEDGER L
inner join PERIODS P
on (L.date_of_transaction between P.start_date);