假设我在sqlite3中有此表name_currency
。
name, currency, price
AA, SGD, 1
BB, USD, 2
CC, EUR, 3
我需要以这种方式处理价格。
if currency == "SGD", price = price*X
if currency == "USD", price = price*Y
if currency == "EUR", price = price*Z
需要从另一个表X
中检索Y
,Z
,currency_multiplier
的值。 currency_multiplier
就是这样。
name, currency, multiplier
AA, SGD, 2 #value of X
BB, USD, 3 #value of Y
CC, EUR, 4 #value of Z
在处理price
列之后,输出表将如下所示;
name, currency, price
AA, SGD, 2
BB, USD, 6
CC, EUR, 12
是否可以完全在sql中做到这一点?我想到的一种解决方案是从name_currency
检索值,然后在python函数中进行处理。但是,我认为完全在sql中完成更为优雅。关于如何开始的任何提示?当处理变得过于复杂时,sqlite3中的SQL是否支持某种形式的功能?
答案 0 :(得分:2)
您可以将name_currency
表加入到currency_multiplier
表中:
SELECT
n.name,
n.currency,
c.multiplier * n.price AS price
FROM name_currency n
INNER JOIN currency_multiplier c
ON n.name = c.name;
请注意,这冒着从报告中删除name_currency
中出现但currency_multiplier
中没有映射的货币的风险。但是,在这种情况下,由于乘数/外汇比率未知,因此您仍将不清楚如何报告。