根据日期范围连接两个表
Join Two Tables based on a Date Range
我的 Firebird 数据库中有两个 table。第一个 table 称为 LEDGER,显示我的交易详情,包括交易日期 (yyyy/mm/dd)。第二个 table 称为 PERIODS,由以下字段组成:
- 期间编号(整数)
- 期间开始日期(yyyy/mm/dd)
- 期间结束日期 (yyyy/mm/dd)
我想根据 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
我的 Firebird 数据库中有两个 table。第一个 table 称为 LEDGER,显示我的交易详情,包括交易日期 (yyyy/mm/dd)。第二个 table 称为 PERIODS,由以下字段组成:
- 期间编号(整数)
- 期间开始日期(yyyy/mm/dd)
- 期间结束日期 (yyyy/mm/dd)
我想根据 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