从 select 函数内的多行创建日期范围,用于进度打开边缘 11

Creating Date Range from multiple rows inside select function for progress open edge 11

我有一个 table 汇率,其中包括生效日期(生效日期)。我想将此信息加入 table 发票中以计算正确的汇率。问题是我需要有一个日期范围,它是从汇率 table 导出的,其中 "date-to" 字段是后续行的 "effective-date" (假设我们已经排序table 根据日期)。我需要能够导出此值,然后将其加入我的单个查询的其余部分。

使用 Row_Number() 或 Lag 和 Lead 的正常索引方法不适用于此处,因为进度使用使用序列的 "business logic"。我不确定如何解决这个问题。

如果有任何帮助,我们正在使用 apprise ERP 及其架构作为进度开放边缘数据库。

希望获得有关如何构建此查询的任何帮助或建议。

我不知道你的 table 的结构,但据我了解你可以这样做:

select pkInvoice, InvoiceAmount, ExchangeRate
from Invoices i1
 left outer join 
  (select pkInvoice, max(EffectiveDate) as effDate
   from Invoices i2 inner join ExchangeRates ex2
    on i.InvoiceDate > ex.EffectiveDate
   group by pkInvoice) rates on i1.pkInvoice = rates.pkInvoice
 left outer join ExchangeRates ex1 on rates.effDate = ex1.EffectiveDate

在这里,基本上您为每个发票行获取具有最新生效日期但早于发票日期的汇率的生效日期。

然后将该生效日期与交易所 table 结合起来以获得汇率,并将该信息与您的发票结合起来 table...