【问题标题】:TSQL - How to find out if a Users Currency rate is correct based on another currency rate for the same userTSQL - 如何根据同一用户的另一种货币汇率确定用户货币汇率是否正确
【发布时间】:2015-11-20 16:53:57
【问题描述】:

我们目前遇到的问题是,一些用户的费率没有正确输入,我的任务是找出哪些输入不正确,但不幸的是我有点卡住了。

要求如下;

  • 如果用户只有英镑计费率,则什么也不做
  • 如果用户有英镑 + 美元的计费率,则; GBP 必须 = USD / 1.55 否则为 FALSE

我是这样开始的:

我们有一个名为 TIMERATE 的表,其中输入了用户的收费率,每次收费率变化时都会添加一个新行。用户可以有一种以上货币的收费率。

这是表中单个用户的数据的一部分;

tkinit  tkeffdate   tkrt01  tkrtcur
LAU 01/02/2014  170 GBP
LAU 01/08/2014  260 GBP
LAU 01/12/2014  130 GBP
LAU 01/08/2014  260 USD
LAU 01/12/2014  210 USD
LAU 01/02/2015  260 USD

要了解每种货币的最新汇率:

SELECT
    TKINIT as Timekeeper,
    MAX (tkeffdate) as MaxEffectiveDate,
    tkrtcur as Currency,
    Cast (NULL as decimal (16,2)) as Rate
INTO
    #LatestRate
FROM
    TIMERATE
GROUP BY
    TKINIT, tkrtcur
ORDER BY
    TKINIT

然后我更新了临时表中的费率

update 
    #LatestRate
Set 
    Rate = tkrt01
from 
    #LatestRate
JOIN 
    Timerate on TKINIT = Timekeeper 
        and tkrtcur = Currency 
        and tkeffdate = MaxEffectiveDate

所以我现在有每个用户的每种货币的最新汇率,但我不知道如何操纵数据以满足要求

有人有什么想法吗?我是不是走错了路?

【问题讨论】:

    标签: sql tsql compare currency rate


    【解决方案1】:

    Rabbit 的回答是比较转换是否正确完成的最简单方法。 完成初始步骤后,您可以在 #LatestRate 表上运行此查询以提供结果。请确保 case 语句中的比较正常工作。我没有测试过这段代码。

    SELECT
        GBP.Timekeeper as Timekeeper,
        GBP.MaxEffectiveDate as EffectiveDate,
        GBP.Currency as GBP,
        GBP.Rate as GBPRate,
        USD.Currency as USD,
        USD.Rate as USDRate,
        case 
            when USD.Rate is null then 'GBP Only' 
            when round(USD.Rate/1.55,2)=round(GBP.Rate,2) then 'Correct Conversion'
            else 'FALSE'
        end as IsConversion
    FROM #LatestRate GBP
    INNER JOIN #LatestRate USD
    ON GBP.Timekeeper=USD.Timekeeper
    and GBP.MaxEffectiveDate=USD.MaxEffectiveDate
    and GBP.Currency='GBP' and USD.Currency='USD'
    

    【讨论】:

      【解决方案2】:

      在 tkinit 和日期加入表格,其中一侧有 gbp,另一侧有 usd。这会将您俩放在一行中,以便您检查费率是否正确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-30
        • 1970-01-01
        • 2018-03-18
        • 2016-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-30
        相关资源
        最近更新 更多