根据日期范围连接两个表

Join Two Tables based on a Date Range

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

我想根据 LEDGER table 使用日期从 PERIODS table 中查找相应的期间,并在此基础上加入两个 table。简而言之,我想显示分类账每一行的期间table,以帮助我准备合并报告。

这里有一个 PERIODS 的例子 table:

执行此操作的最佳方法是什么?

如果我是开发人员,我会将该期间添加到分类帐中 table 并在交易级别填充该期间,但不幸的是现在为时已晚。

如有任何帮助,我们将不胜感激。

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

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);

你可以直接使用 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