根据日期范围合并两个表

问题描述 投票:0回答:2

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

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

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

下面是PERIODS表的示例:

enter image description here

什么是最好的方法?

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

任何帮助将不胜感激。

sql join firebird
2个回答
0
投票

嗨,

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

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

谢谢


0
投票

检查this answer,以确保您是一周中的第一天。然后只需添加一个新的计算字段。

ALTER TABLE ledger ADD COLUMN period integer(4);  

然后只需更新新列。

UPDATE ledger SET period = month(start);
© www.soinside.com 2019 - 2024. All rights reserved.