我有一张桌子(例如A),可以为我提供从货币到美元的货币换算。可以说我目前有3种货币。
使用此表,我想创建以下输出表(例如B)。
例如,AED到ARS的汇率为3.67 / 18.87 = .19
想象一下,我在表A中有70种货币。这很难手动计算。我正在尝试在SSMS中执行此操作。
有一种方法很棒。
预先感谢
答案 0 :(得分:1)
您可以通过将表格的笛卡尔乘积与其自身进行检索来检索所有交换值的组合。我们可以使用 CROSS JOIN 。
由于在所有情况下toCurrency均为USD,因此我们可以直接将2个表的'from'值相除,以得出from和tor货币的其他组合。一个示例代码片段如下:
DROP TABLE IF EXISTS currencyExchangeBase
CREATE TABLE currencyExchangeBase ( fromCode varchar(3),
toCode varchar(3),
exchangeValue numeric(19, 2) )
INSERT INTO currencyExchangeBase
VALUES ('AED','USD',3.67),('ARS','USD',18.87), ('AUD','USD',1.28205);
SELECT b1.fromCode AS fromCode,
b2.fromCode AS toCode,
b1.exchangeValue/b2.exchangeValue AS exchangeValue
FROM currencyExchangeBase b1
CROSS JOIN currencyExchangeBase b2