gpt4 book ai didi

mysql - 比较最接近交易日期的有效历史记录

转载 作者:行者123 更新时间:2023-11-29 06:59:24 24 4
gpt4 key购买 nike

我正在尝试执行审计,将当天的实际汇率与当天应该支付的历史汇率进行比较。

我创建了一个临时表来从历史记录中获取所需的信息,并将其命名为 PPDAUDIT。这里是审计SQL

SELECT EMPLOYEE, PAY_SUM_GRP, HOURS, RATE, TR_DATE, DATE, CORRECT_RATE
FROM
(
SELECT A.EMPLOYEE
, A.PAY_SUM_GRP
, A.HOURS
, A.RATE
, A.TR_DATE
, A.DATE
, CASE
WHEN (MAX((B.BEG_DATE) < A.TR_DATE))
AND B.FLD_NBR = '730'
THEN B.N_VALUE/C.ANNUAL_HOURS
END AS 'CORRECT_RATE'
FROM `PPDAUDIT` AS A
INNER JOIN `[dbo]_[hrhistory]` AS B ON B.EMPLOYEE = A.EMPLOYEE
INNER JOIN `[dbo]_[employee]` AS C ON C.EMPLOYEE = A.EMPLOYEE
WHERE A.RATE <> (B.N_VALUE/C.ANNUAL_HOURS)
) AS D
WHERE CORRECT_RATE IS NOT NULL

我期望得到的是历史记录,但最接近交易日期,然后只得到那些历史记录和转换不匹配的记录。它拉动的是第二近的。

示例:如果一笔交易发生在 2012 年 1 月 1 日,并且在 2011 年 12 月 31 日、2011 年 10 月 10 日和 2011 年 10 月 10 日和 2011 年 7 月 24 日都有历史记录,那么它会提取 10 月 10 日附加到历史记录的汇率,而不是比所需的 12/31。

最佳答案

在SQL Server 2008中,可以使用outer apply来搜索最新的历史记录。例如,这将搜索交易日期之前的最后汇率:

select  *
from TransactionUnderInvestigation tui
outer apply
(
select top 1 *
from RateHistory rh
where rh.EmployeeId = tui.EmployeeId
and RateStartDate <= tui.TransactionDate
order by
RateStartDate desc
) hist

关于mysql - 比较最接近交易日期的有效历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com